【问题标题】:Create a trigger to insert records from a table to another one. Get inserted values in a trigger创建一个触发器以将记录从一个表插入另一个表。获取触发器中的插入值
【发布时间】:2013-03-06 05:40:18
【问题描述】:

我有两张桌子tbl_PurchaseDetailstbl_ItemDetails。我需要将一些行从tbl_PurchaseDetails 插入tbl_ItemDetails,就在它插入tbl_PurchaseDetails 之后。我知道这个问题,但我无法解决它。请帮忙。

我为触发器编写了以下代码:

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。它抛出以下错误:

消息 515,级别 16,状态 2,过程 trigger_UpdateItemDetails,第 11 行
无法将值 NULL 插入到列“PurchaseID”、表“dbStockHandling.dbo.tbl_ItemDetails”中;列不允许空值。插入失败。

我的问题是如何从tbl_PurchaseDetails 获取插入的值,以便触发器可以将它们插入tbl_ItemDetails

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    请尝试:

    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
    

    并确保将NOT NULL 值插入到表tbl_PurchaseDetails 的列PurchaseID

    【讨论】:

    • 非常感谢您的回复。实际上,两个触发器都可以正常工作。我想要'tbl_ItemDetails'中的自动增量字段,但我没有实现,这就是发生错误的原因。再次感谢你。 :D
    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多