Ошибка уникального индекса

Я создал уникальный индекс идентификаторов сотрудников для существующей таблицы. Я сделал тест и ввел идентификатор сотрудника, уже сохраненный в базе данных, и база данных все еще сохранила его. Когда я выполняю поиск по этому идентификатору, в нем отображаются обе записи.

Проверьте индекс, вставив запись с повторяющимся идентификатором сотрудника.

CREATE INDEX empid_index ON staff (empId)

Ожидал сообщение об ошибке о дублирующемся ID, но ошибки не вышло, запись все равно сохранилась.


person Jdeleon    schedule 28.05.2019    source источник
comment
Вы не создали уникальный индекс с этим предложением. Для этого вам нужно сделать СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС empid_index ON staff (empId)   -  person nacho    schedule 28.05.2019
comment
Спасибо за вашу помощь, ценю это.   -  person Jdeleon    schedule 28.05.2019
comment
Почему это не PRIMARY KEY??   -  person Rick James    schedule 29.05.2019


Ответы (1)


Не создавайте уникальные индексы: вместо этого добавьте в таблицу уникальные ограничения. Например:

create table staff (
  ...
  constraint unique_empid unique (empid),
  ...
);

Несмотря на то, что уникальные индексы не позволят вам вставлять повторяющиеся строки с этим значением, вы будете упускать другие функции ограничения, такие как экспорт внешних ключей, которые могут вам понадобиться позже.

person The Impaler    schedule 28.05.2019