我有兩個表tbl_PurchaseDetails
和tbl_ItemDetails
。我需要從tbl_PurchaseDetails
插入一些記錄到tbl_ItemDetails
,插入tbl_PurchaseDetails
之後。 tbl_PurchaseDetails
已自動生成自定義字段PurchaseID
。創建觸發器以將表中的記錄插入另一個表中。表'A'的觸發列在表'B'中插入爲空
代碼自動生成的PurchaseID
是: - * 這觸發完美的作品 *
CREATE FUNCTION CreatePurchaseID (@id INT)
RETURNSvarchar(10)
AS
BEGIN
RETURN 'P' + CONVERT(VARCHAR(10), @id)
END
CREATE TRIGGER trigger_PurchaseID ON tbl_PurchaseDetails
FOR INSERT AS
UPDATE
tbl_PurchaseDetails
SET
tbl_PurchaseDetails.PurchaseID = dbo.CreatePurchaseID(tbl_PurchaseDetails.ID)
FROM
tbl_PurchaseDetails
INNER JOIN
INSERTED on tbl_PurchaseDetails.ID= INSERTED.ID
我寫了下面的代碼觸發插入到tbl_ItemDetails
: -
CREATE TRIGGER trigger_UpdateItemDetails ON tbl_PurchaseDetails
FOR INSERT AS
DECLARE @PurchaseID VARCHAR(20)
DECLARE @Quantity INT
DECLARE @WarehouseID VARCHAR(20)
SELECT @PurchaseID=(PurchaseID) FROM INSERTED
SELECT @Quantity=(ItemQuantity) FROM INSERTED
SELECT @WarehouseID=(WarehouseID) FROM INSERTED
INSERT INTO
tbl_ItemDetails
(PurchaseID,Quantity,WarehouseID)
VALUES
(
@PurchaseID,@Quantity,@WarehouseID
)
**現在,當我插入到tbl_PurchaseDetails
的記錄成功添加到tbl_PurchaseDetails
和tbl_ItemDetails
。這裏的問題是,PurchaseID
在tbl_ItemDetails
中插入爲空。不過,它按照預期插入到tbl_PurchaseDetails
中。
爲什麼不只是使'PurchaseID'成爲一個計算列(使用你已有的函數,或者只是內聯),並完全刪除第一個觸發器? – 2013-03-06 07:03:45
此外,你的第二個觸發器基本上被打破了 - 它假設只有一個行在'INSERTED' – 2013-03-06 07:10:56
我確實試圖這樣做,但我遇到了問題。如果你用一些代碼來幫助我這麼做會很好。 @Damien_The_Unbeliever – 2013-03-06 07:26:44