使用Trigger在插入后创建新记录并从另一个表中选择

时间:2015-02-17 03:04:35

标签: mysql sql-server select triggers insert

希望有人可以帮助我。我已经尝试了很多我发现的触发器的变化,但似乎无法获得我之后的结果。我只能将其用于单个记录,但在多个记录上失败。我知道这是错的,但我发布代码只是为了让我看起来不像是在尝试让别人为我构建触发器。

以下是该方案。我有产品,位置和库存表。我想要做的是在输入新产品后自动将产品编号添加到库存表中,余额为0。但它需要有一个每个位置的记录,因此Lets现在说东西方位置,但可以更多地添加。这样,当该地点有库存到货时,他们可以按进出更新库存。

这是我现在拥有的。

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记录而失败。我通常只是在努力解决这些问题,直到我偶然发现有效的编码,但确实需要帮助。感谢所有的贡献。

1 个答案:

答案 0 :(得分:0)

要插入多行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