目前我的数据库(SQL server 2005 Express)有2个表,tblDepartment和tblDepartmentcola。两者之间的区别在于"可乐"有一个额外的布尔字段。由于超出此问题范围的原因,我需要在tblDepartmentcola中插入对tblDepartment所做的任何更改。为此,我需要使用触发器。
在阅读了一些内容之后,我得到了一个暂时的"更新"表不存在?这是正确的吗?。如果是这样,我怎么能选择"更新"行??我在过去制作过触发器,从"更新"和"已删除"表,但这个不起作用。知道为什么吗?
CREATE TRIGGER items_ ON [tblDepartment] FOR Update AS
INSERT INTO [tblDepartmentcola]
SELECT ...
go
答案 0 :(得分:0)
Sql server中没有updated
表,只有inserted
and deleted
CREATE TRIGGER items_ ON [tblDepartment] after Update AS
begin
INSERT INTO [tblDepartmentcola]
SELECT * from inserted
end
答案 1 :(得分:0)
如果要查看已更新的记录以插入到其他表中,则可以在DELETED表中存在主键时查询触发器中的INSERTED表。
INSERT INTO TrackUpdatesTable ( PrimaryFieldId, Field1, Field2, Field3 )
SELECT I.PrimaryFieldId, I.Field1, I.Field2, I.Field3
FROM INSERTED I
JOIN DELETED D ON D.PrimaryFieldId = I.PrimaryFieldId
或
INSERT INTO TrackUpdatesTable ( PrimaryFieldId, Field1, Field2, Field3 )
SELECT I.PrimaryFieldId, I.Field1, I.Field2, I.Field3
FROM INSERTED I
WHERE EXISTS ( SELECT * FROM DELETED WHERE PrimaryFieldId = I.PrimaryFieldId )
希望这有帮助。