Я создал следующий триггер, так что если какой-либо элемент в таблице Sales.OrderDetails имеет UnitPrice менее 10, он не может получить скидку больше, чем .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);
она принимает его, триггер не бросает ошибку, несмотря на то, что это UnitPrice меньше, чем 10 и decount больше, чем 5.
Wha Мне здесь не хватает?
Как это: ограничение Cons_PriceLessDicount Check (UnitPrice > 10 или dicount <0,50); ? –
Я не понимаю комментария. Вы можете называть contstraint тем, что хотите, до тех пор, пока это значащее имя. –
Я написал код ограничения в комментарии, который может быть добавлен в код изменения –