2009-09-04 3 views
1

에 새로운 기록을 갱신 :는 SQL 서버 : "Northwind를"샘플을 사용하여 삽입

OrderDetail가 삽입 될 때마다, 그것의 현재 값을 얻을 수 있도록 내가 OrderDetails의 테이블에 삽입 트리거를 만들고 싶습니다 UnitCost는 Products 테이블에 정의되어 있습니다.

이 내용은 다음과 같아야하지만 올바르게 처리하는 데 어려움이 있습니다. 도울 수 있니 ?

 
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 서버를 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

감사 에릭 –

+0

이봐, 난 당신을 위해 여기있어 :) 다른 사람에 대한 – Eric

+0

은 그냥 참고 : SQL Server가 "삽입 한 후는"좋아하는 것 같지 않습니다. 그러나 "FOR INSERT"는 그 일을합니다. –