如何在每次插入 sql 服务器 table 后自动触发触发器?
How to fire trigger after every insert in sql server table automatically?
我是 SQL 服务器触发器的新手。我最近遇到一个问题,我有两个 table,分别命名为 tbl_Item
和 tbl_changePrice
。我想在 tbl_changeprice
插入新行时更新 tbl_Item
。使用此新行名称,相同日期的数据将在 tbl_item
table 中更新。
这是我尝试更新 table:
的触发器
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
要处理一次插入的多行 - 您需要重写触发器才能处理多行 Inserted
- 像这样:
ALTER TRIGGER trgAfterInsert
ON [dbo].[tbl_changePrice]
AFTER INSERT
AS
UPDATE dbo.tbl_Item
SET sellingPrice = i.saleprice, buyingPrice = i.pprice
FROM Inserted i
WHERE tbl_Item.name = i.name
PRINT 'AFTER INSERT trigger fired.'
GO
我是 SQL 服务器触发器的新手。我最近遇到一个问题,我有两个 table,分别命名为 tbl_Item
和 tbl_changePrice
。我想在 tbl_changeprice
插入新行时更新 tbl_Item
。使用此新行名称,相同日期的数据将在 tbl_item
table 中更新。
这是我尝试更新 table:
的触发器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
要处理一次插入的多行 - 您需要重写触发器才能处理多行 Inserted
- 像这样:
ALTER TRIGGER trgAfterInsert
ON [dbo].[tbl_changePrice]
AFTER INSERT
AS
UPDATE dbo.tbl_Item
SET sellingPrice = i.saleprice, buyingPrice = i.pprice
FROM Inserted i
WHERE tbl_Item.name = i.name
PRINT 'AFTER INSERT trigger fired.'
GO