2009-09-04 241 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