在另一个表中插入更新的行

时间:2013-09-02 13:53:08

标签: sql sql-server tsql sql-server-2005 triggers

目前我的数据库(SQL server 2005 Express)有2个表,tblDepartment和tblDepartmentcola。两者之间的区别在于"可乐"有一个额外的布尔字段。由于超出此问题范围的原因,我需要在tblDepartmentcola中插入对tblDepartment所做的任何更改。为此,我需要使用触发器。

在阅读了一些内容之后,我得到了一个暂时的"更新"表不存在?这是正确的吗?。如果是这样,我怎么能选择"更新"行??我在过去制作过触发器,从"更新"和"已删除"表,但这个不起作用。知道为什么吗?

CREATE TRIGGER items_ ON [tblDepartment] FOR Update AS
INSERT INTO [tblDepartmentcola]
SELECT ...

go

2 个答案:

答案 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 )

希望这有帮助。