2

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

在阅读了一些东西之后,我的印象是临时“更新”表不存在?这是正确的吗?。如果是这样,我怎么能选择“更新”行?,我过去做过触发器,从“更新”和“删除”表中进行选择,但这一个不起作用。知道为什么吗?

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

go
4

2 回答 2

0

Sql server 中没有updated表,只有inserteddeleted

CREATE TRIGGER items_ ON [tblDepartment] after Update AS
begin
    INSERT INTO [tblDepartmentcola]
    SELECT * from inserted
end
于 2013-09-02T14:02:10.903 回答
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 )

希望这可以帮助。

于 2013-09-02T15:52:21.737 回答