SORU
1 AĞUSTOS 2008, Cuma


Bir MySQL tetikleyici bir hata atmak

Bir tetikleyici vargüncellemeden öncebir tablo üzerinde, nasıl bu tabloyu güncellemeyi engelleyen bir hata atabilir miyim?

CEVAP
25 AĞUSTOS 2011, PERŞEMBE


Bu eski bir soru olduğunu biliyorum, ama güncel ve daha az hacky alternatif (v5.bir olarak 5 - muhtemelen daha önce edemem testi) aşağıda yaklaşım deneyin:

delimiter //
use test//
create table trigger_test
(
    id int not null
)//
drop trigger if exists trg_trigger_test_ins //
create trigger trg_trigger_test_ins before insert on trigger_test
for each row
begin
    declare msg varchar(255);
    if new.id < 0 then
        set msg = concat('MyTriggerError: Trying to insert a negative value in trigger_test: ', cast(new.id as char));
        signal sqlstate '45000' set message_text = msg;
    end if;
end
//

delimiter ;
-- run the following as seperate statements:
insert into trigger_test values (1), (-1), (2); -- everything fails as one row is bad
select * from trigger_test;
insert into trigger_test values (1); -- succeeds as expected
insert into trigger_test values (-1); -- fails as expected
select * from trigger_test;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • campos9896

    campos9896

    24 Mart 2012
  • JayzTwoCents

    JayzTwoCents

    26 AĞUSTOS 2012
  • theatre2film

    theatre2film

    12 NİSAN 2006