Mysql
 sql >> база данни >  >> RDS >> Mysql

Извежда грешка, предотвратяваща актуализация на таблицата в MySQL тригер

От MySQL 5.5 можете да използвате SIGNAL синтаксис за хвърляне на изключение :

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

Състояние 45000 е общо състояние, представляващо "необработено потребителско дефинирано изключение".

Ето по-пълен пример за подхода:

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. PDO множество заявки

  2. Какво е местоположението на mysql клиента .my.cnf в XAMPP за Windows?

  3. UTF-8 докрай

  4. Генериране на поредица от дати

  5. Как да получите данни за последния 1 час в MySQL