Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ném lỗi ngăn cập nhật bảng trong trình kích hoạt MySQL

Kể từ MySQL 5.5, bạn có thể sử dụng SIGNAL cú pháp để đưa ra một ngoại lệ :

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

Trạng thái 45000 là trạng thái chung đại diện cho "ngoại lệ không được xử lý do người dùng xác định".

Dưới đây là một ví dụ đầy đủ hơn về cách tiếp cận:

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. node.js async / await sử dụng với MySQL

  2. Mysql có tương đương với @@ ROWCOUNT như trong mssql không?

  3. Địa chỉ IP lưu trữ trong cơ sở dữ liệu MySQL bằng PHP

  4. So sánh quản trị cơ bản giữa Oracle, MSSQL, MySQL, PostgreSQL

  5. Tính toán khoảng cách giữa các mã zip trong PHP