gpt4 book ai didi

SQL 触发器 - 如何测试操作?

转载 作者:行者123 更新时间:2023-11-30 23:49:55 27 4
gpt4 key购买 nike

我的触发器触发 INSERT, UPDATE and DELETE .我需要根据触发触发器的操作从适当的内存表( inserted, deleted )插入。由于只有 inserted位于 INSERTdeletedDELETE我想我可以做一个插入,如果没有行,我很好。

但是,UPDATE填充两个表。我只想要来自 deleted 的值在 UPDATE .我尝试使用 UPDATE(column) 测试更新函数,但这会返回 TRUE即使在 INSERT .那么,我如何测试 UPDATE ?

ALTER TRIGGER CREATE_tableAudit
ON dbo.table
FOR INSERT, UPDATE, DELETE
AS
BEGIN
IF(UPDATE([column1]))--returns true on INSERT :(
BEGIN
INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
SELECT * from deleted --update
END
ELSE
BEGIN
--only inserted is populated on INSERT, visa-versa with DELETE
INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
select * from inserted --insert


INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
select * from deleted --delete

END

最佳答案

要测试 UPDATE,请在 Inserted 中查找相同的主键值。和 Deleted表。

/* These rows have been updated */
SELECT i.PKColumn
FROM inserted i
INNER JOIN deleted d
ON i.PKColumn = d.PKColumn

关于SQL 触发器 - 如何测试操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com