2014-07-02 3 views
0

Таблица:sqlite3 - делает сочетание двух записей уникальных

Car | Year | Colour 
--------------- 
= 
BMW | 2013 | Black 

Benz | 2011 | Red 

BMW | 2011 | Orange 

Как вы можете видеть, ни «Автомобиль», ни колонки «Year» являются уникальными. Но как я могу сделать комбинацию Car and Make уникальной, чтобы эта таблица не принимала никаких других (BMW, 2013, what_colour) записей?

ответ

1

Вы можете сделать что-либо:

CREATE UNIQUE INDEX ON TableName(Car,Year) 

или вы можете повторно создать таблицу с PRIMARY KEY на (Car, Year). Если у вас есть другие таблицы, которые идентифицируют модели с помощью комбинации Car, Year, и вы хотите, чтобы эти пары были проверены в отношении основной таблицы, предпочтительным решением является PRIMARY KEY (с совпадением FOREIGN KEY s, указанным на другой таблице (таблицах)).

+0

Но если я уже использовал PRIMARY KEY для ID, могу ли я иметь еще один PRIMARY KEY в таблице? например «CREATE TABLE HEADERS» (ID INTEGER PRIMARY KEY NOT NULL, PRIMARY KEY (HEADERS, UNIT) »? Спасибо за помощь Ларри :) – Houman

+0

Нет, только один ПЕРВЫЙ КЛЮЧ. Таким образом, в этом случае вы будете использовать решение UNIQUE INDEX, которое разрешено. Вы могли бы также рассмотреть отказ от столбца идентификатора вместо «интеллектуального» PRIMARY KEY on (Car, Year), хотя многие разработчики предпочитают решение ID. –

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