दुर्भाग्य से, MySQL चेक बाधाओं का समर्थन नहीं करता . यह उन्हें पार्स करता है और फिर चुपचाप बाधा को त्याग देता है, जैसे यह एक माईसाम टेबल पर विदेशी कुंजी बाधाओं के लिए करता है। यह आपको असमर्थित बाधा प्रकार के बारे में चेतावनी भी नहीं देता है, जो मुझे लगता है कि उनकी ओर से एक खराब डिज़ाइन निर्णय है।
यहाँ एक ट्रिगर का उपयोग करके समाधान दिया गया है:
mysql> DELIMITER //
mysql> CREATE TRIGGER check_one_not_null BEFORE INSERT ON mytable FOR EACH ROW
IF COALESCE(NEW.D, NEW.E, NEW.F) IS NULL
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'One of D, E, or F must have a non-null value.';
END IF //
BEFORE UPDATE
. आपको भी ऐसा ही एक ट्रिगर बनाना चाहिए एक ही टेबल पर।
देखें http://dev.mysql.com/doc/refman/ 5.6/hi/signal.html
SIGNAL
. पर अधिक जानकारी के लिए MySQL ट्रिगर या संग्रहीत दिनचर्या में अपवाद बढ़ाने के लिए कथन।