2009-08-23 3 views
1

У меня есть база данных, где мне нужно избегать вставки дубликатов. Требования:sql уникальные и установочные ограничения для вставок

Для подмножества строк с 1 столбца соответствия, не может быть любыми, которые имеют один и тот же столбец 2.

для подмножества строк с соответствием столбца 1, не может быть любым, что имеют ту же колонку 3 и 4.

Я новичок в SQL, так что есть способ установить эти отношения при создании базы данных (создать таблицу) или мне нужно сделать выбор и выполнить эти проверки вручную до вставляя в таблицу?

ответ

4

Фактически вам нужны столбцы 1 и 2, чтобы быть уникальными, а также столбцы 1,3 и 4, чтобы быть уникальными. Поэтому, когда вы создаете таблицу, вы можете использовать два УНИКАЛЬНЫХ константы:

CREATE TABLE tbl (
    col1 varchar(255), 
    col2 varchar(255), 
    col3 varchar(255), 
    col4 varchar(255), 
    CONSTRAINT uc_first UNIQUE(col1, col2), 
    CONSTRAINT uc_second UNIQUE(col1, col3, col4) 
) 
+0

Спасибо. Одна вещь, есть ли способ узнать, какое ограничение запускается в sqlite? Google показывает, что некоторые люди жалуются на необходимость сравнения строк (.IsSameAs («SQLITE_CONSTRAINT [19]: столбцы 1, 3, 4, не являются уникальными»)). Кажется, клонки. – max

0

Просто чтобы получить мяч прокатки ...

могли бы вы вернуться сразу после вставки и удаления дублированных строк на основе контрсил вы упомянули?

+0

Ух ... быть вежливым об этом. Да, ты можешь; но нет, было бы ужасно неэффективно это делать. –

+0

Достаточно честный. Я узнал из ответа Тодда Оуэна, что CONSTRAINT необходимо, когда таблица создана. Полагаю, это можно изменить после создания. Вернуться к руководству ... – pavium

Смежные вопросы