【发布时间】:2015-01-27 10:18:54
【问题描述】:
我是 SQL Server 触发器的新手。我最近遇到一个问题,我有两个名为tbl_Item 和tbl_changePrice 的表。当tbl_changeprice 插入新行时,我想更新tbl_Item。使用此新行名称,tbl_item 表中的相同日期数据将更新。
这是我尝试更新表格的触发器:
Alter TRIGGER trgAfterInsert ON [dbo].[tbl_changePrice]
After insert
AS
declare @itemname int;
declare @saleprice decimal(18,2);
declare @buyprice decimal(18,2);
select @itemname=i.name from inserted i;
select @saleprice=i.saleprice from inserted i;
select @buyprice=i.pprice from inserted i;
update tbl_Item set sellingPrice= @saleprice, buyingPrice= @buyprice where name= @itemname
PRINT 'AFTER INSERT trigger fired.'
GO
【问题讨论】:
-
您的触发器有 MAJOR 缺陷,因为您似乎认为它会每行调用一次 - 那是不是 b> 情况。触发器每个语句触发一次,因此如果您的
UPDATE语句影响 25 行,您将触发触发器一次,然后是Inserted和 @987654329 @ 每个将包含 25 行。您的代码将在这 25 行中选择哪一行?select @itemname=i.name from inserted i;- 这是不确定的。您需要重写触发器以考虑到这一点!
标签: sql sql-server database stored-procedures triggers