У меня есть триггер SQL в таблице, который будет запускаться после вставки, обновления и удаления.MSSQL Trigger - Issue
Вставьте все затронутые записи в отдельную физическую таблицу с кодами, определяющими состояние обновления. Следующий фрагмент кода определяется триггером.
CREATE TRIGGER [dbo].[DATA_CACHE]
ON [dbo].[DATA_USAGE]
for Insert,Update,Delete
AS
BEGIN
if(select COUNT(*) from inserted)>0
begin
if (select COUNT(*) from deleted)>0
BEGIN
--update
INSERT INTO CACHE_UPDATE_TABLE (CODE, ID, DATE, COUNT)
SELECT 2, ins.ID, ins.DATE, ins.COUNT
from inserted ins
END
else
begin
-- insert
INSERT INTO CACHE_UPDATE_TABLE (CODE, ID, DATE, COUNT)
SELECT 1, ins.ID, ins.DATE, ins.COUNT
from inserted ins
end
END
else
BEGIN
-- delete
INSERT INTO CACHE_UPDATE_TABLE (CODE, ID, DATE, COUNT)
SELECT 3, del.ID, del.DATE, del.COUNT
from deleted del
end
END
SELECT * FROM CACHE_UPDATE_TABLE
Как вы можете видеть в приведенном выше спускового я добавил дополнительное заявление после запуска с помощью ОШИБКИ, выбирая все значения из таблицы назначения. Это утверждение было после определенного триггера, однако, когда я попытался изменить триггер, щелкнув правой кнопкой мыши на триггере и выбрав модификацию, он также показал мне инструкцию select после концевого блока триггера.
Означает ли это, что каждый раз, когда запускается триггер, выполняется этот оператор выбора? это мой первый вопрос (вопрос А). Может быть, это глупо, но я немного смущен этим.
Мой второй вопрос (вопрос B) Я столкнулся с проблемой блокировки на CACHE_UPDATE_TABLE, может ли это быть причиной блокировки? Также есть задание SQL, которое выполняется каждую минуту, чтобы проверить таблицу CACHE_UPDATE_TABLE, а затем я выполняю некоторую операцию (связанный с сервером) и удаляю эти записи из CACHE_UPDATE_TABLE после того, как я закончен. Из-за этого может возникнуть проблема блокировки? и если да, то как мне это противостоять?
Мой третий вопрос (вопрос C) Это лучший способ сделать эту операцию с помощью триггеров или я могу сделать это по-другому? Правильно ли установлен триггер?
-Полная помощь будет оценена ... Спасибо.
У вас много вопросов, поэтому вы не получили никаких ответов. Я, например, могу частично ответить A и полностью ответить на C, но не B. – OGHaza