SQL Server子查询a

SQL Server子查询a,sql,sql-server,Sql,Sql Server,请帮助我,我得到了这个错误: Msg 512,16级,状态1,程序suadulieu,第11行 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 您需要在条件检查中使用exists。很可能是这样的。没有更多的细节,就不可能知道你想做什么 if UPDATE(DonGia) if((select DonGia from inserted) >= (select DonGia from inserted)*1.2) begin

请帮助我,我得到了这个错误:

Msg 512,16级,状态1,程序suadulieu,第11行 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时


您需要在条件检查中使用exists。很可能是这样的。没有更多的细节,就不可能知道你想做什么

 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'

触发器在SQL Server中按语句触发,而不是按行触发。ifselect DonGia from inserted>=3600无法正确进行多行更新。inserted可以包含0、1或多行。那么,您希望select DonGia from inserted返回什么,以及如何将这些多个值与3600进行有意义的比较。其中一些可能符合该条件。有些可能不行。你能帮我修一下吗?然后跑:cậ新罕布什尔州ậ萨奇b酒店ộ DonGia=3060 nơi MaTG='TG1和MaNXB='nxb1'
 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)
)