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

क्या एक अद्वितीय बाधा को परिभाषित करने के लिए कोई समाधान है जो NULL मानों को गैर-विशिष्ट मानता है?

जैसा कि CREATE INDEX के तहत प्रलेखित है सिंटैक्स :

आप किसी एक्सप्रेशन पर इंडेक्स को परिभाषित नहीं कर सकते (जैसे कि आपके प्रश्न में दिया गया है), इसलिए MySQL का UNIQUE अनुक्रमणिका आपकी इच्छानुसार बाधा को लागू नहीं कर सकती हैं।

इसके बजाय, आप BEFORE INSERT . बना सकते हैं ट्रिगर यदि मेल खाने वाला रिकॉर्ड पहले से मौजूद है तो यह त्रुटि उत्पन्न करता है:

DELIMITER ;;

CREATE TRIGGER uniq1 BEFORE INSERT ON my_table FOR EACH ROW
  IF EXISTS(
    SELECT *
    FROM   my_table
    WHERE  column1 <=> NEW.column1 AND column2 <=> NEW.column2
    LIMIT  1
  ) THEN
    SIGNAL
      SQLSTATE '23000'
      SET MESSAGE_TEXT = 'Duplicate entry for key uniq1';
  END IF;;

UPDATE को रोकने के लिए इसी तरह की समस्या पैदा करने से, आप शायद एक समान BEFORE UPDATE बनाना चाहेंगे ट्रिगर भी।




  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 में auto_increment फ़ील्ड को रीसेट कर सकता हूँ?

  2. PHP MySQL ट्रिगर - ट्रिगर करने के लिए चर कैसे पास करें?

  3. php . का उपयोग करके jqplot ग्राफ बनाना

  4. एक MySQL डेटाबेस को SQLite डेटाबेस में निर्यात करें

  5. MySQLConverter' ऑब्जेक्ट में mysql-कनेक्टर के साथ कोई विशेषता नहीं है '_tuple_to_mysql' अपवाद