SQL: предотвращение двойной вставки комбинации элементов - PullRequest
2 голосов
/ 06 мая 2011

Когда вы делаете поле уникальным, оно может быть вставлено только один раз. Есть ли способ сделать два поля уникальными, когда они используются вместе, или есть синтаксис SQL, который позволил бы мне это сделать?

У меня есть userID и itemNr. Пользователи могут иметь столько номеров элементов, сколько захотят, и в настоящее время они просто вставляются. Это означает, что я не могу установить их УНИКАЛЬНО.

Однако я хочу, чтобы одна и та же комбинация была в БД дважды.

Я знаю, как это сделать программно (сначала выберите элемент, затем проверьте, соответствует ли он тому, который вы хотите вставить, если это так, обновите его).

Есть ли более элегантный способ использования прямого синтаксиса SQL? Я использую MySQL.

Ответы [ 3 ]

4 голосов
/ 06 мая 2011

Вы можете сделать это с составным уникальным ограничением:

alter table your_table
    add constraint your_unique_key unique (col1, col2)
/
1 голос
/ 06 мая 2011

Вместо простого определения каждого столбца как уникального (который устанавливает каждый столбец как независимо уникальный), объявите «составной уникальный ключ», в котором комбинация двух или более значений столбца должна быть уникальной во всех строках таблицы.Основной синтаксис:

ALTER myTable ADD CONSTRAINT myTable_Unique_ColumnA_ColumnB UNIQUE (ColumnA, ColumnB)
0 голосов
/ 06 мая 2011

Это делается с уникальными ограничениями.Например, если ваша таблица называется table1, вы можете сделать что-то подобное:

изменить таблицу table1 добавить ограничение c1 unique (userID, itemNr);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...