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'
Пожалуйста, помогите мне, я получаю эту ошибку:SQL Server Subquery
Msg 512, Level 16, State 1, Procedure suadulieu, Line 11
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
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, а не за строку. 'if ((выберите DonGia из вставленного)> = 3600)' wont корректно работать для многократных обновлений. –
'вставленный' может содержать 0, 1 или * несколько строк. Итак, что вы ожидаете от '(выберите DonGia из вставленного)', чтобы вернуться, и как эти значения могут быть сопоставлены с 3600. * Некоторые из них могут соответствовать этому условию. * некоторые * не могу. –
Можете ли вы помочь мне исправить это? – tienoho