Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं mySql में कई स्तंभों पर सशर्त गैर-शून्य बाधाओं को कैसे परिभाषित कर सकता हूं?

दुर्भाग्य से, 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 ट्रिगर या संग्रहीत दिनचर्या में अपवाद बढ़ाने के लिए कथन।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं सशर्त एकत्रीकरण mysql को लार्वा क्वेरी में कैसे परिवर्तित कर सकता हूं?

  2. देशांतर और अक्षांश द्वारा दूरी की गणना के साथ SQL क्वेरी को कैसे अनुकूलित करें?

  3. PHP में MySQL क्वेरी को फ़िल्टर करना

  4. बाहरी php फ़ाइल में Jfactory वर्ग शामिल करें, जूमला

  5. MySQL में ट्रिगर निष्पादित करने के लिए किन विशेषाधिकारों की आवश्यकता होती है?