我已经创建了如下触发这样如果在Sales.OrderDetails表中的任何项目都有一个单价低于10,就不能有折扣大于0.5度:SQL触发器不工作
create trigger Sales.tr_SalesOrderDetailsDML
on Sales.OrderDetails
After insert, update
as
begin
if @@ROWCOUNT > 0 return ;
set nocount on;
if exists (select oi.orderid
from inserted as oi
where oi.unitprice < 10.0 and oi.discount > 0.50)
Throw 50002, 'Order can''t have discount more than 5 if unit price is less than 10', 10;
end;
go
当我插入下面一行:
INSERT INTO Sales.OrderDetails (orderid,productid,unitprice,qty,discount)
VALUES (10249, 16, 9.00, 1, 0.90);
它接受它,触发不会抛出错误,尽管事实上,它的单价低于10 decount是大于5
什我在这里错过吗?
像这样:约束Cons_PriceLessDicount 检查(单价> 10或者dicount <0.50); ? –
我不明白评论。只要它是一个有意义的名字,你可以随心所欲地调用contstraint。 –
我已经在约束代码中写了约束代码,它可以在alter code中添加 –