#arrays #sqlite #unique
#массивы #sqlite ( код ) #уникальный #sqlite
Вопрос:
Таблица:
Car | Year | Colour
---------------
=
BMW | 2013 | Black
Benz | 2011 | Red
BMW | 2011 | Orange
Как вы можете видеть, ни столбцы «Автомобиль», ни «Год выпуска» не являются уникальными. Но как я могу сделать комбинацию Car и Make уникальной, чтобы эта таблица не принимала никаких других записей (BMW, 2013, whatever_colour)?
Ответ №1:
Вы можете сделать либо:
CREATE UNIQUE INDEX ON TableName(Car,Year)
или вы можете заново создать таблицу с PRIMARY KEY
включением (Car, Year)
. Если у вас есть другие таблицы, которые идентифицируют модели с Car, Year
комбинацией, и вы хотите убедиться, что эти пары сверяются с основной таблицей, PRIMARY KEY
это предпочтительное решение (с совпадающими FOREIGN KEY
таблицами, объявленными в другой таблице (ах)).
Комментарии:
1. Но если я уже использовал ПЕРВИЧНЫЙ КЛЮЧ для ID, могу ли я иметь другой ПЕРВИЧНЫЙ КЛЮЧ в таблице? например, «СОЗДАТЬ ЗАГОЛОВКИ ТАБЛИЦ (ИДЕНТИФИКАТОР ЦЕЛОГО ПЕРВИЧНОГО КЛЮЧА НЕ равен НУЛЮ, ПЕРВИЧНЫЙ КЛЮЧ (ЗАГОЛОВКИ, ЕДИНИЦА измерения)»? Спасибо за помощь, Ларри
![]()
2. Нет, только один ПЕРВИЧНЫЙ КЛЮЧ. Итак, в этом случае вы будете использовать решение с УНИКАЛЬНЫМ индексом, которое разрешено. Вы могли бы также рассмотреть возможность отказа от столбца ID вместо «интеллектуального» ПЕРВИЧНОГО КЛЮЧА на (автомобиль, год), хотя многие разработчики предпочитают решение ID.