我创建了一个Modified Order表,并没有向其中插入任何数据。每当有人更新订单表时,该表应该有一个条目。我创建了一个触发器,声明如果更新Order表中的一行,它会触发Order Modified表中的一个条目。它工作正常,唯一的问题是我不知道如何获得更新的订单ID以输入订单修改表。
订单修改表代码:
Create Table Modified_Order (
Modified_Order_Number Int Identity (1,1),
Modified_Order_Date Date,
Order_ID Int,
Foreign Key (Order_ID) references Orders (Order_ID)
);
触发码:
Create Trigger Modified_Order_Trigger
On Orders After Update
AS
Insert Into Modified_Order Values (getdate(), )
;
我遇到的问题是获取已更新的订单的订单ID,以显示在Order Modified表中。我知道它出现在getdate()之后留空的地方。我知道它与添加select语句有关,我只是不确定在where语句之后放入什么,所以它知道在订单表中更新订单的订单ID。
Create Trigger Modified_Order_Trigger
On Orders After Update
AS
Insert Into Modified_Order Values (getdate(), (Select Order_ID
from Order
where )
;
由于
答案 0 :(得分:6)
在触发器中,INSERTED和DELETED虚拟表具有来自两种状态的数据:INSERTED具有新的INSERT或UPDATE,而DELETED具有旧的UPDATE或DELETE。所以语法基本上是:
Create Trigger Modified_Order_Trigger
On Orders
After Update
AS
Insert Into Modified_Order (Modified_Order_Date, Order_ID)
SELECT GETDATE(), Order_ID
FROM INSERTED
有关触发器的更多信息,请查看此处:http://technet.microsoft.com/en-us/library/ms189799.aspx