У меня есть объект Sequence
, установленный в одной из наших баз данных с шагом 1, который мы в настоящее время используем в качестве первичного ключа для двух наших таблиц, чтобы обеспечить уникальность через них обоих. Это контролируется с помощью следующих ограничений на столах:SQL Server: предотвращение ручного ввода в колонку, управляемую последовательностью
ADD CONSTRAINT SEQ_MySequence DEFAULT (NEXT VALUE FOR dbo.SEQ_sID) FOR ID;
Мы хотим запретить пользователю вручную вставлять данные в эту колонку, но мы не можем найти надежный способ сделать это. Триггер кажется очевидным выбором; однако после INSERT триггеры выполняются после ограничения обжигают и, таким образом, ниже не работает:
CREATE TRIGGER BlockInsert ON MyTable
AFTER INSERT
AS
IF (SELECT ID FROM inserted) IS NOT NULL
BEGIN
ROLLBACK
END
Кто-нибудь есть какие-нибудь идеи?
Вы гуглом других типов триггеров? – dfundako
Удалите разрешения на вставку в таблицу и убедитесь, что все вставки и обновления должны проходить через представление, не отображающее этот столбец? –
Вместо этого вы можете использовать столбец «Identity»? –