sql server对product表写一个UPDATE触发器。product表有pno,pname,pclass,pprice
时间: 2024-12-17 08:28:20 浏览: 4
sql.rar_SPJ_SQL例程_city_site:www.pudn.com_数据库spj表
5星 · 资源好评率100%
在SQL Server中,你可以创建一个UPDATE触发器来自动处理产品表(Product Table)的数据更新操作。假设你想在更新产品价格(pprice)时,同时检查新价格是否大于0并且记录下更新前后的信息,可以编写如下的存储过程触发器:
```sql
CREATE TRIGGER UpdatePriceTrigger
ON Product
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @OldPPrice DECIMAL(10, 2), @NewPPrice DECIMAL(10, 2);
SELECT @OldPPrice = OLD.pprice,
@NewPPrice = NEW.pprice;
IF @@ROWCOUNT = 0
BEGIN
PRINT 'No rows updated';
RETURN;
END
IF @NewPPrice <= 0
BEGIN
RAISERROR ('New price cannot be less than or equal to zero', 16, 1);
ROLLBACK TRANSACTION;
RETURN;
END
INSERT INTO PriceChangeHistory (PNO, OldPrice, NewPrice)
VALUES (NEW.PNO, @OldPPrice, @NewPPrice);
END;
GO
```
这个触发器会在`Product`表的`pprice`字段被更新之后执行。它首先保存旧价格和新价格,然后检查新价格是否大于0。如果新价格无效,会返回错误并回滚事务;否则,将更新前的价格信息插入到`PriceChangeHistory`表中。
阅读全文