我有两个表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