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

TRIGGER khiến INSERT không thành công? Có thể được?

Từ điều này bài đăng trên blog

MySQL Trigger:Làm thế nào để bạn hủy bỏ một INSERT, UPDATE hoặc DELETE với atrigger? Trên #mysql của EfNet, ai đó đã đặt:

Làm cách nào để đặt trình kích hoạt hủy bỏ hoạt động nếu quy tắc kinh doanh của tôi không thành công?

Trong MySQL 5.0 và 5.1, bạn cần phải giải quyết một số thủ thuật để làm cho atrigger không thành công và đưa ra thông báo có ý nghĩa. Câu hỏi thường gặp về MySQL StoredProcedure cho biết điều này về việc xử lý lỗi:

SP 11. Các SP có tuyên bố “tăng” để “nêu lỗi ứng dụng” không? Xin lỗi, không phải hiện tại. Các câu lệnh SIGNAL và RESIGNAL tiêu chuẩn SQL nằm trên TODO.

Có lẽ MySQL 5.2 sẽ bao gồm SIGNALstatement sẽ làm cho hackstolen này ngay từ Lập trình MySQL StoredProcedure trở nên lỗi thời. Vụ hack là gì? Bạn sẽ forceMySQL để cố gắng sử dụng một cột không tồn tại. Xấu xí? Đúng. Nó hoạt động? Chắc chắn rồi.

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai &Quản lý Cụm NDB của MySQL với ClusterControl

  2. Cách lấy ngày hiện tại trong MySQL

  3. Chuyển văn bản thành số trong truy vấn MySQL

  4. Ví dụ về DATEDIFF () - MySQL

  5. Cách tạo cột biến giả cho hàng nghìn danh mục trong Google BigQuery?