如何创建触发器控制折扣金额输入不超过商品售价的20%?
触发器实现:控制折扣不超过商品售价的20%
要实现限制折扣金额不超过对应商品售价20%的校验逻辑,可以通过创建AFTER类型触发器,在插入或更新数据时自动检查规则,违反则抛出错误阻止操作。
示例实现代码
CREATE TRIGGER [dbo].[Control] ON [dbo].[Ordered Goods] AFTER INSERT, UPDATE AS BEGIN SET NOCOUNT ON; -- 校验是否存在折扣超出售价20%的记录 IF EXISTS ( SELECT 1 FROM Inserted I WHERE I.Discount > (0.20 * I.Priceproduct) ) BEGIN -- SQL Server 2012及以上版本推荐使用THROW替代RAISERROR,语法更简洁 -- THROW 50001, '折扣金额不得超过商品售价的20%', 1; RAISERROR(N'折扣金额不得超过商品售价的20%', 16, 1); END; END;
代码说明
- 触发器绑定在
[dbo].[Ordered Goods]表上,监听INSERT和UPDATE两种操作 - 借助
Inserted临时表获取新增或更新后的数据,判断Discount字段是否超出售价的20%阈值 - 一旦检测到违规记录,通过错误提示阻断当前操作,确保数据合规
触发错误时的效果

内容的提问来源于stack exchange,提问作者pokelawls
相关产品推荐
相关产品推荐

