Я хотел бы преобразовать сохраненный процесс в триггер. Предполагается, что хранимый процесс запускается после вставки / обновления, но пользователи забывают выполнять его чаще, чем нет!
Хранимая процедура вставляет пересчитанные значения для некоторых строк:
--Delete rows where RowCode=111
DELETE FROM dbo.TableA WHERE [year]>=1998 AND RowCode=111
--Insert new values for RowCode=111 for years>=1998
INSERT INTO dbo.TableA
SELECT [Year], RowCode=111, ColCode, SUM(Amt) AS Amt
FROM dbo.TableA
WHERE [Year]>=1998 AND RowCode IN (1,12,23) AND ColCode=14
GROUP BY [Year], ColCode
Я бы хотел включить это в триггер, чтобы пользователям не приходилось думать о запуске процедуры.
У меня началось следующее, но я не уверен, что я на правильном пути. Должен ли я использовать FOR, AFTER или INSTEAD OF?
CREATE TRIGGER TRIU_TableA
ON TableA
FOR INSERT,UPDATE AS
BEGIN
SET NOCOUNT ON
IF EXISTS (SELECT * FROM Inserted WHERE RowCode=111)
BEGIN
INSERT INTO TableA
SELECT [Year], RowCode, ColCode, SUM(Amt) AS Amt
FROM Inserted
WHERE [Year]>=1998 AND RowCode IN (1,12,23) AND ColCode=14
GROUP BY [Year], ColCode
END
END
Любая помощь в том, как это сделать, будет очень признательна.
Большое спасибо
Mark