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

mysql tạo lỗi cú pháp kích hoạt

Khi bạn cố gắng sửa lỗi qua SIGNAL bạn cần chỉ định SQLSTATE là mã lỗi và đối với mã lỗi chung do người dùng xác định 45000 của nó cùng với nội dung tin nhắn MESSAGE_TEXT

Vì vậy, trình kích hoạt trở thành

delimiter //
create trigger lock_x_id before update on games
for each row
begin
 if old.xid is not null then
   signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
 end if;
end;//
delimiter ;

Trường hợp thử nghiệm

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 | NULL |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Hãy tạo trình kích hoạt ngay bây giờ

mysql> delimiter //
mysql> create trigger lock_x_id before update on games
    -> for each row
    -> begin
    ->  if old.xid is not null then
    ->    signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
    ->  end if;
    -> end;//
Query OK, 0 rows affected (0.05 sec)


mysql> update games set xid = 4 where id = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update games set xid = 5 where id=5;
ERROR 1644 (45000): Your custom error message

Và sau khi chạy 2 lệnh cập nhật ở trên, bảng sẽ trông như thế nào

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 |    4 |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Lưu ý rằng lần cập nhật thứ 2 không thành công và hàng không thay đổi.

Đọc thêm về điều này https://dev.mysql.com/doc /refman/5.5/en/signal.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java PreparedStatement và TRÊN CẬP NHẬT KHÓA DUPLICATE:làm cách nào để biết liệu hàng đã được chèn hoặc cập nhật hay chưa?

  2. Giao dịch độc quyền của Laravel 4 với cập nhật và lựa chọn

  3. Làm thế nào để cài đặt pyodbc 64-bit?

  4. Giá trị số nguyên không chính xác:'' cho cột 'id' ở hàng 1

  5. TẢI THÔNG TIN DỮ LIỆU trong PHPmyadmin