У меня есть триггер, который я пытаюсь получить до update/insert
данных в один конкретный столбец всякий раз, когда происходит или UPDATE
. Проблема в том, что она работает только на UPDATE
...Как запустить триггер для вставки и обновления?
Это действительно первый триггер, который я когда-либо писал, и я не могу его понять. Может ли кто-нибудь помочь мне, где я ошибаюсь?
Вот триггер:
CREATE TRIGGER [dbo].[TEST_TRIGGER]
ON [dbo].[TEST_TABLE]
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
UPDATE [dbo].TEST_TABLE
SET HASH_VALUE = HASHBYTES('md5',
CAST(ISNULL([COL_1], -1) as nvarchar(255))
+ CAST(ISNULL([COL_2], -1) as nvarchar(255))
+ CAST(ISNULL([COL_3], -1) as nvarchar(255))
+ CAST(ISNULL([COL_4], -1) as nvarchar(255))
)
WHERE ID IN (SELECT ID FROM inserted)
END
GO
Я не вижу никаких проблем с этим - и на самом деле, я просто попробовал это на SQL Server 2014, и он работает отлично, насколько я могу видеть. Как выглядит ваш оператор 'INSERT', который, похоже, не работает для вас? –
@marc_s - Спасибо за комментарий. Оказывается, мой спусковой механизм был полностью в порядке. Я добавил свой ответ внизу для чьи-либо будущие интересы, если вы хотите посмотреть, что я сделал ... – scapegoat17