MySQL делает две категории уникальными друг для друга

У меня есть строка с именем user_id и символом. Я хочу сделать так, чтобы каждый user_id мог иметь определенный символ только один раз.

Это строка, которую я написал, чтобы сделать это

ALTER TABLE  `portfolio` ADD UNIQUE (
`user_id` ,
`symbol`
);

Однако это делает его таким, что я также не могу иметь user_id более одного раза. Поэтому, если я добавлю столбец с user_id = 21 и символом = AAA, я не смогу добавить еще один столбец с user_id = 21 и символом = BBB.

нью идеи

1

Решение

Следующее ограничение делает именно то, что вы хотите: оно гарантирует, что каждая комбинация пользователь / символ появляется только один раз:

ALTER TABLE portfolio ADD UNIQUE (user_id, symbol);

Хорошая практика при добавлении ограничений — давать им значимые имена:

ALTER TABLE portfolio
ADD CONSTRAINT unq_portfolio_userid_symbol
UNIQUE(user_id, symbol);

Таким образом, когда ограничение нарушается, вы знаете, который ограничение нарушено. Если вы не можете добавить пользователя с другим символом, то, возможно, user_id (или же symbol) объявляется как первичный ключ таблицы или сам по себе или как часть другого уникального столбца.

2

Другие решения

Привет менан
В этом случае вы можете использовать составной первичный ключ

ALTER TABLE portfolio add
constraint pkc_portfolio primary key (id, code);

Ваша комбинация идентификатора и кода не будет повторяться

0