2009-09-04 99 views
1

使用“罗斯文”样本更新的新纪录:SQL SERVER:在插入

我想创建的OrderDetails表的INSERT触发器,使每一个的OrderDetail插入时,它得到的电流值产品表中定义的UnitCost。

它应该是这样的,但我有麻烦得到它的权利。你能帮我吗 ?

 
CREATE TRIGGER Trigger1 
ON OrderDetails as od 
FOR INSERT 
AS 
    -- save unit cost 
    od.unitCost = (select UnitCost from Products as p 
         WHERE p.ProductId = i.ProductId) 

我使用SQL Server 2008的 谢谢!

回答

4

您必须将inserted表加入orderdetails表中才能找出插入的内容。像这样:

CREATE TRIGGER Trigger1 
ON OrderDetails as od 
FOR INSERT 
AS 
BEGIN 

    update od 
    set unitcost = p.unitcost 
    from 
     orderdetails od 
     inner join inserted i on 
      od.orderlineid = i.orderlineid 
     inner join produts p on 
      p.productid = od.productid 

END 
+0

感谢埃里克为好和快速的解答 – 2009-09-04 12:18:25

+0

嘿,我在这里为你:) – Eric 2009-09-04 12:31:04

+0

只是为别人注意:SQL服务器似乎并不喜欢“FOR AFTER INSERT”。但是“FOR INSERT”完成这项工作。 – 2009-09-04 12:42:15