Как организовать недопуск повторяющихся записей?
Есть таблица:
(
RECORD_ID int IDENTITY -- номер записи
,AREA_ID nvarchar(50) NOT NULL -- код участа
,[YEAR] int NOT NULL -- год запланированных работ
,[MONTH] int NOT NULL -- месяц запланированных работ
,WORK_TYPE_ID int NOT NULL -- тип запланированных работ
,AMOUNT float NOT NULL -- количество запланированных работ в ед.изменения
);
Операторы заполняют её согласно плану предприятия. У меня трудности с организацией уникальности записей Суть в том что если внесена запись по определенному типу работ в определнные год и месяц, нужно запретить повторный ввод.
Мне в голову приходит создание составного первичного ключа, включающего AREA_ID, YEAR, MONTH, WORK_TYPE_ID. Либо написание триггера на обработку вставки, но в мс сервере нет аргумента BEFORE. Есть еще вариант через буферную таблицу, но полагаю что есть вариант проще.
Ответы (1 шт):
Мне в голову приходит создание составного первичного ключа
Вам нужен не первичный, а альтернативный ключ. В SQL они реализуются через UNIQUE CONSTRAINT.
Насколько я помню, в MS SQL он реализуется специальным автогенерируемым системным триггером, и не обязан иметь индекс. Хотя если в таблице записей больше сотни, то индекс желателен.