У меня есть таблица с составным первичным ключом из 3 столбцов, скажем A, B, C. Я хочу создать триггер, который на UPDATE
будет проверять что эти три столбца не будут изменены. Это то, что я до сих пор, но это не похоже на работу:Создайте триггер, который не позволит обновлять столбцы первичного ключа
CREATE TRIGGER TableTrigger
ON Table
AFTER INSERT, UPDATE AS
BEGIN
IF (EXISTS (SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted))
BEGIN
-- Update Operation
IF (SELECT COUNT(*) FROM inserted WHERE A IS NOT NULL OR B IS NOT NULL OR C IS NOT NULL) > 0
BEGIN
RAISERROR('Error, you cannot change Primary Key columns', 16, 1)
ROLLBACK
RETURN
END
END
Я ожидал, что, если я обновлю некоторые значения в таблице, в inserted
значение для столбцов я не обновляю в быть NULL, но это не так. Я где-то читал, что мне нужно посмотреть как в inserted
, так и на deleted
, чтобы увидеть, изменились ли эти значения. Итак, мой вопрос в том, могу ли я проверить это без использования курсора?
спасибо.
Спасибо вам большое! – Cosmin