create trigger suadulieu22
on SACH
for update
as
if UPDATE(MaTG) or UPDATE(MaNXB)
begin
rollback tran
print ('khong cho phep sua du lieu o cot MaTG va MaNXB')
end
if UPDATE(DonGia)
if((select DonGia from inserted) >= 3600)
begin
rollback tran
print 'don gia moi phai khong vuot qua 20% don gia cu '
end
update SACH
set MaNXB = 'nxb1'
where MaTG = 'tg1' and MaNXB = 'nxb1'
update SACH
set DonGia = 3060
where MaTG = 'tg1' and MaNXB = 'nxb1'
请帮助我,我得到这个错误:
消息512,级别16,状态1,过程suadulieu,行11
子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。
if UPDATE(DonGia)
if((select DonGia from inserted) >= (select DonGia from inserted)*1.2)
begin
rollback tran
print 'don gia moi phai khong vuot qua 20% don gia cu '
end
update SACH
set DonGia = 3060
where MaTG = 'tg1' and MaNXB = 'nxb1'
您需要在条件检查中使用存在项。最有可能是这样的。没有更多细节,就不可能知道您要做什么。
if EXISTS(
select MAX(DonGia)
from inserted
having MAX(DonGia) >= (select MIN(DonGia) * 1.2 from inserted)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句