当前位置: 首页 > 面试题库 >

创建触发器以将记录从表插入到另一个。在触发器中获取插入的值

权烨磊
2023-03-14
问题内容

我有两个桌子tbl_PurchaseDetailstbl_ItemDetails。我需要一些行插入tbl_ItemDetailstbl_PurchaseDetails,它被插入之后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插入表’dbStockHandling.dbo.tbl_ItemDetails’的列’PurchaseID’中;列不允许为空。INSERT失败。_

我的问题是如何从中获取插入的值,tbl_PurchaseDetails以便触发器可以将其插入tbl_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

并确保您NOT NULLPurchaseID在table的列中插入一个值tbl_PurchaseDetails



 类似资料:
  • 问题内容: 我正在尝试编写触发器,我有下表:BookingRequest: 状态表: 被占领的房间: 我需要一个触发器,如果​​将具有相同ID的请求插入到OccupiedRoom表中,它将把BookingReques中的状态更改为1,所以我尝试了类似的操作 而且它不起作用,所以任何建议都非常有用 问题答案: 尝试这个:

  • 问题内容: 我正在寻找在表上创建MySQL触发器。本质上,我正在创建活动流,并且需要记录用户的操作。当用户发表评论时,我希望该表上的数据库触发器触发并: 抓住最后插入的行的ID(注释行的ID)。 使用最后插入的行中的数据对活动表执行INSERT。 实际上,我将复制此触发器以删除评论。 我的问题: LAST_INSERT_ID()是获取ID的最佳方法吗? 如何正确存储最后插入的注释行中的数据,以便在

  • 我正在尝试创建一个触发器,该触发器将在更新另一个表之后更新一个表。我需要它,这样如果数字列中的一个数字被更新,那么这需要记录在另一个表中。这就是我到目前为止所拥有的。。 测试更新到表: 如您所见,我正在尝试将新插入的用户编号存储到一个变量中,然后该变量将用于填充user_changes表的insertednumber列。任何帮助都将不胜感激,谢谢!

  • 本文向大家介绍在第一个表中实现MySQL触发器以在第二个表中插入记录?,包括了在第一个表中实现MySQL触发器以在第二个表中插入记录?的使用技巧和注意事项,需要的朋友参考一下 为此,语法如下- 让我们首先创建一个表- 这是创建第二个表的查询- 这是插入之前的触发器查询- 让我们将记录插入第一个表- 现在,您可以使用select语句显示第一个表中的所有记录- 这将产生以下输出- 让我们检查第二张表的

  • 问题内容: 我使用触发器来插入行,并希望使用上一个创建的ID供后续查询使用。 我该怎么办? 代码如下: 问题答案: 您是否看过LAST_INSERT_ID()?但要注意: 如果使用单个INSERT语句插入多行,则LAST_INSERT_ID()仅返回为第一个插入行生成的值。

  • 问题内容: 我目前正在创建某种库存系统。 我在哪里保存项目。在中,我有一栏或剩余的可用库存。 tbl1: 我还有一个表,我将所有交易保存在该表中。在这张桌子上有。 tbl2 我的问题是如何在UPDATE的同时插入一行。 例如:当我在request_by,product和qty_issued中插入记录时,我希望可以自动更新。因为我们向John发出了2(数量)的鼠标。tbl1中的鼠标记录应自动减少到“