使用触发器创建新记录后使用插入和 select 来自另一个 Table
Using Trigger to Create new records using after insert and select from another Table
希望有人能帮助我。我已经尝试了多种我发现的触发器变体,但似乎无法获得我想要的结果。我只能让它为单个记录工作,但在多个记录上失败。我知道这是错误的,但我会 post 代码只是为了让它看起来不像是在试图让某人为我构建触发器。
场景如下。我有产品、位置和库存 table。我想做的是在输入新产品后自动将产品编号添加到余额为 0 的库存 table 中。但它需要有每个位置的记录,所以让我们暂时说东和西位置,但可以添加更多。这样,当该地点有库存时,他们可以在进出时更新库存。
这是我现在拥有的。
USE [TestInventory]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[BalanceUpdate] ON [dbo].[Parts]
FOR INSERT
AS
declare @PartNumber varchar(50);
declare @Balance smallint = '0';
declare @Location smallint;
SELECT @Location = (Select ID from Location);
Select @PartNumber = PartNumber from inserted ;
Insert into Stock_Balance
(PartNumber, Location, Balance) Values(@PartNumber, @Location, @Balance);
当然因为多个位置 ID 记录而失败。我通常只是努力解决这些问题,直到我偶然发现有效的编码,但在这方面确实需要帮助。感谢所有贡献。
插入多行Location
。试试这个:
INSERT INTO Stock_Balance(PartNumber, Location, Balance))
SELECT @PartNumber, ID, @Balance
FROM Location
你的触发器现在是:
ALTER TRIGGER [dbo].[BalanceUpdate] ON [dbo].[Parts]
FOR INSERT
AS
DECLARE @PartNumber VARCHAR(50);
DECLARE @Balance SMALLINT = '0';
SELECT @PartNumber = PartNumber FROM inserted ;
INSERT INTO Stock_Balance(PartNumber, Location, Balance)
SELECT @PartNumber, ID, @Balance
FROM Location
希望有人能帮助我。我已经尝试了多种我发现的触发器变体,但似乎无法获得我想要的结果。我只能让它为单个记录工作,但在多个记录上失败。我知道这是错误的,但我会 post 代码只是为了让它看起来不像是在试图让某人为我构建触发器。
场景如下。我有产品、位置和库存 table。我想做的是在输入新产品后自动将产品编号添加到余额为 0 的库存 table 中。但它需要有每个位置的记录,所以让我们暂时说东和西位置,但可以添加更多。这样,当该地点有库存时,他们可以在进出时更新库存。
这是我现在拥有的。
USE [TestInventory]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[BalanceUpdate] ON [dbo].[Parts]
FOR INSERT
AS
declare @PartNumber varchar(50);
declare @Balance smallint = '0';
declare @Location smallint;
SELECT @Location = (Select ID from Location);
Select @PartNumber = PartNumber from inserted ;
Insert into Stock_Balance
(PartNumber, Location, Balance) Values(@PartNumber, @Location, @Balance);
当然因为多个位置 ID 记录而失败。我通常只是努力解决这些问题,直到我偶然发现有效的编码,但在这方面确实需要帮助。感谢所有贡献。
插入多行Location
。试试这个:
INSERT INTO Stock_Balance(PartNumber, Location, Balance))
SELECT @PartNumber, ID, @Balance
FROM Location
你的触发器现在是:
ALTER TRIGGER [dbo].[BalanceUpdate] ON [dbo].[Parts]
FOR INSERT
AS
DECLARE @PartNumber VARCHAR(50);
DECLARE @Balance SMALLINT = '0';
SELECT @PartNumber = PartNumber FROM inserted ;
INSERT INTO Stock_Balance(PartNumber, Location, Balance)
SELECT @PartNumber, ID, @Balance
FROM Location