Sql 创建一个触发器,将记录从一个表插入到另一个表。获取触发器中插入的值
我有两个表Sql 创建一个触发器,将记录从一个表插入到另一个表。获取触发器中插入的值,sql,sql-server,Sql,Sql Server,我有两个表tbl\u PurchaseDetails和tbl\u ItemDetails。在插入tbl\u PurchaseDetails之后,我需要在tbl\u PurchaseDetails的tbl\u ItemDetails中插入一些行。我知道这个问题,但我不能解决它。请帮忙 我已经为触发器编写了以下代码: CREATE TRIGGER trigger_UpdateItemDetails ON tbl_PurchaseDetails FOR INSERT AS DECLARE @Purch
tbl\u PurchaseDetails
和tbl\u ItemDetails
。在插入tbl\u PurchaseDetails
之后,我需要在tbl\u PurchaseDetails
的tbl\u 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\u PurchaseDetails
时,行被添加到tbl\u PurchaseDetails
中,而不是添加到tbl\u ItemDetails
。它抛出以下错误:
Msg 515,第16级,状态2,程序触发器\u UpdateItemDetails,第11行无法将值NULL插入表“dbStockHandling.dbo.tbl_ItemDetails”的列“PurchaseID”中;列不允许空值。插入失败 我的问题是如何从
tbl\u PurchaseDetails
获取插入的值,以便触发器可以将它们插入tbl\u ItemDetails
?请尝试:
CREATE TRIGGER trigger_UpdateItemDetails ON tbl_PurchaseDetails
FOR INSERT AS
BEGIN
INSERT INTO
tbl_ItemDetails
(
PurchaseID,
Quantity,
WarehouseID
)
SELECT
PurchaseID,
ItemQuantity,
WarehouseID
FROM
INSERTED
END
并确保在表
tbl_PurchaseDetails
的PurchaseID
列中插入notnull
值。非常感谢您的回复。实际上,两个触发器都可以正常工作。我希望在“tbl_ItemDetails”中有一个自动递增字段,但我没有实现,这就是发生错误的原因。再次感谢你D