Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zgłosić błąd uniemożliwiający aktualizację tabeli w wyzwalaczu MySQL

Od MySQL 5.5 możesz użyć SIGNAL składnia, aby zgłosić wyjątek :

signal sqlstate '45000' set message_text = 'My Error Message';

Stan 45000 to ogólny stan reprezentujący „nieobsługiwany wyjątek zdefiniowany przez użytkownika”.

Oto pełniejszy przykład tego podejścia:

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(128);
    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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zmienić domyślny limit czasu połączenia Mysql podczas łączenia się przez Pythona?

  2. Wyjaśnienie struktury wysokiej dostępności MySQL – część II:replikacja półsynchroniczna

  3. Jak uzyskać liczbę wierszy w tabeli MySQL za pomocą PHP?

  4. AKTUALIZUJ wiele tabel w MySQL za pomocą LEFT JOIN

  5. Słowo kluczowe LIMIT na MySQL z przygotowaną instrukcją