इस से ब्लॉग पोस्ट
<ब्लॉकक्वॉट>MySQL ट्रिगर्स:आप ट्रिगर के साथ INSERT, UPDATE या DELETE को कैसे निरस्त करते हैं? एफनेट के #mysql पर किसी ने पूछा:
यदि मेरा व्यवसाय नियम विफल हो जाता है, तो मैं एक ट्रिगर को ऑपरेशन को कैसे रोकूं?
MySQL 5.0 और 5.1 में आपको ट्रिगर को विफल करने और एक सार्थक त्रुटि संदेश देने के लिए कुछ चालबाजी का सहारा लेना होगा। MySQL StoredProcedure FAQ यह त्रुटि प्रबंधन के बारे में कहता है:
एसपी 11. क्या एसपी के पास "आवेदन त्रुटियों को बढ़ाने" के लिए "उठाएं" कथन है? क्षमा करें, वर्तमान में नहीं। SQL मानक SIGNAL और RESIGNAL स्टेटमेंट TODO पर हैं।
शायद MySQL 5.2 में SIGNALstatement शामिल होगा जो इस हैकस्टोलन को सीधे MySQL StoredProcedure Programming से अप्रचलित बना देगा। हैक क्या है? आप MySQL को उस कॉलम का उपयोग करने का प्रयास करने के लिए मजबूर करने जा रहे हैं जो मौजूद नहीं है। कुरूप? हां। क्या यह काम करता है? ज़रूर।
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;