जैसा कि 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
बनाना चाहेंगे ट्रिगर भी।