У меня есть строка с именем user_id и символом. Я хочу сделать так, чтобы каждый user_id мог иметь определенный символ только один раз.
Это строка, которую я написал, чтобы сделать это
ALTER TABLE `portfolio` ADD UNIQUE (
`user_id` ,
`symbol`
);
Однако это делает его таким, что я также не могу иметь user_id более одного раза. Поэтому, если я добавлю столбец с user_id = 21 и символом = AAA, я не смогу добавить еще один столбец с user_id = 21 и символом = BBB.
нью идеи
Следующее ограничение делает именно то, что вы хотите: оно гарантирует, что каждая комбинация пользователь / символ появляется только один раз:
ALTER TABLE portfolio ADD UNIQUE (user_id, symbol);
Хорошая практика при добавлении ограничений — давать им значимые имена:
ALTER TABLE portfolio
ADD CONSTRAINT unq_portfolio_userid_symbol
UNIQUE(user_id, symbol);
Таким образом, когда ограничение нарушается, вы знаете, который ограничение нарушено. Если вы не можете добавить пользователя с другим символом, то, возможно, user_id
(или же symbol
) объявляется как первичный ключ таблицы или сам по себе или как часть другого уникального столбца.
Привет менан
В этом случае вы можете использовать составной первичный ключ
ALTER TABLE portfolio add
constraint pkc_portfolio primary key (id, code);
Ваша комбинация идентификатора и кода не будет повторяться