Композитный ключ + автоинкрементное поле

Поскольку вы используете case, вы определяете частичную функцию, а частичные функции требуют фигурных скобок.

0
задан Isan Rodriguez Trimiño 8 March 2019 в 15:36
поделиться

1 ответ

[…], поэтому я использую составной ключ, чтобы убедиться, что комбинация name и group_id не может использоваться 2 раза.

Вы описываете необходимость ограничения; это не должно быть ключом вообще. При определении таблицы вы можете указать ограничение, что несколько полей должны быть уникальными вместе:

CREATE TABLE tag (
    name varchar(50),
    group_id int,
    UNIQUE (name, group_id) );

Таким образом, вы получите СУБД, обеспечивающую для этих столбцов уникальную пару значений в каждой записи, не подразумевая, что являются ключом для поиска.

Итак, вы можете назначить любой первичный ключ, который вам нравится. Поскольку вы хотите, чтобы поле id было первичным ключом, сделайте это:

CREATE TABLE tag (
    name varchar(50),
    group_id int,
    id serial NOT NULL,
    UNIQUE (name, group_id),
    PRIMARY KEY (id) );
0
ответ дан bignose 8 March 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: