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;