我有两个触发器插入或更新后,而不是插入。看来after trigger没有运行或发送正确的数据。插入后,更新触发器没有运行
我已经验证Z_UpdateStageTable存储过程的正确操作,而是插入的触发。删除而不是插入触发器没有任何影响。插入后,更新触发器一次正常工作,我没有做任何更改。我试图删除它并添加它,但它仍然不运行或具有正确的数据。
任何想法?
而是插入的:
ALTER TRIGGER [DeleteExistingFilter]
ON [dbo].[Z_MobileSyncFilters]
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Z_MobileSyncFilters WHERE UserID = (SELECT UserID FROM INSERTED);
INSERT INTO Z_MobileSyncFilters
SELECT *
FROM INSERTED;
END
后插入,更新:
TRIGGER [UpdateStageTable]
ON [dbo].[Z_MobileSyncFilters]
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @AllWos AS VARCHAR(5000);
DECLARE @PmWos AS VARCHAR(5000);
DECLARE @RepWos AS VARCHAR(5000);
SET @AllWos = (SELECT AllWos FROM INSERTED);
SET @RepWos = (SELECT AllWos FROM INSERTED);
SET @PmWos = (SELECT AllWos FROM INSERTED);
EXEC Z_UpdateStageTable @AllWos;
EXEC Z_UpdateStageTable @RepWos;
EXEC Z_UpdateStageTable @PmWos;
END
的应用程序(不是我)有新的数据每次连接时间。不幸的是,该应用程序不够智能执行更新,因此它试图在连接时进行插入。没有删除它只能在第一次使用。 – NitroxDM 2009-02-24 19:11:13
丹尼斯是正确的第二个触发器是不正确的,如果多行插入发生,将无法正常工作。永远不要只依靠在触发器中插入/更新/删除一行。 – HLGEM 2009-02-24 19:42:55