2013-05-14 18 views
1

我是新來的使用數據庫觸發器,所以我想在這裏指出正確的方向。我想觸發執行新的發票的'插入'或我的Invoice表的'BalanceDue'的'更新',以VendorIDInvoices,抓取Vendors表中的Vendor行並移動該行中的一些數據到另一張表ShippingLabels。這是我到目前爲止,但林有點不知道從哪裏走。使用數據庫觸發器來移動記錄

CREATE TRIGGER trSetShippingLabels 
ON tblInvoices 
AFTER Insert, Update 
AS 
INSERT INTO tblShippingLabels 
SELECT VendorName, VendorAddress, VendorCity, VendorState, VendorZipCode 
FROM tblVendors 
JOIN tblInvoices i on i.VendorID = Vendors.VendorID 

回答

1

你非常接近。你只需要在你的觸發器中使用the special "inserted" table。該表可在觸發器中(或與輸出子句結合使用)訪問,並保存對相關永久表執行的最後一條語句插入的所有數據。如果你想刪除觸發器中的一些數據,還有一個相應的「刪除」表。

CREATE TRIGGER trSetShippingLabels 
ON tblInvoices 
AFTER Insert,Update 
AS 
INSERT INTO tblShippingLabels 
SELECT VendorName, VendorAddress, VendorCity, VendorState, VendorZipCode 
FROM Vendors 
JOIN Inserted i on i.VendorID = Vendors.VendorID 
+0

我知道插入的東西,但並不確定這是否也適用於更新。 –

+0

@AndyLink它的確如此。從MSDN鏈接:'更新事務類似於刪除操作,然後是插入操作;先將舊行復制到已刪除的表中,然後將新行復制到觸發器表和插入的表中。「# –

+1

謝謝@EsotericScreenName! :) –

相關問題