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

एकाधिक स्तंभों में एक द्विदिश अद्वितीय अनुक्रमणिका को कैसे कार्यान्वित करें

Mysql में केवल एक ही तरीका है जिसके बारे में मैं सोच सकता हूं कि कुछ उपयोगिता कॉलम जोड़ना है जैसे

CREATE TABLE tbl_challenger (
  host int,
  challenger int,
  u0 int, u1 int
);

और कुछ ट्रिगर जोड़ें जो u0 . सेट करते हैं और u1 दो में से सबसे छोटा और सबसे बड़ा:

CREATE TRIGGER uinsert BEFORE INSERT ON tbl_challenger
 FOR EACH ROW SET NEW.u0 = LEAST(NEW.host,NEW.challenger),
  NEW.u1 = GREATEST(NEW.host,NEW.challenger);
CREATE TRIGGER uupdate BEFORE UPDATE ON tbl_challenger
 FOR EACH ROW SET NEW.u0 = LEAST(NEW.host,NEW.challenger),
  NEW.u1 = GREATEST(NEW.host,NEW.challenger);

फिर आप (u0,u1) . पर एक अद्वितीय अनुक्रमणिका जोड़ते हैं

CREATE UNIQUE INDEX uniqueness ON tbl_challenger(u0,u1);

और अब आपको ऑर्डर की परवाह किए बिना डुप्लीकेट जोड़ी डालने का प्रयास करने में त्रुटि मिलेगी।

एक अच्छे RDBMS जैसे PostgreSQL . पर आप अभिव्यक्ति पर अनुक्रमणिका का उपयोग करने में सक्षम होंगे:

CREATE UNIQUE INDEX uniqueness ON tbl_challenger
    ( LEAST(host,challenger), GREATEST( host,challenger) );

इसलिए, बहुत देर होने से पहले स्विच करें;-)



  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. MAX (तारीख) द्वारा कैसे चुनें?

  3. विंडोज़ संदेश भेजने के लिए MySQL उपयोगकर्ता परिभाषित कार्य

  4. हाइव (0.13.1) तालिका में डेटा कैसे सम्मिलित करें?

  5. पासवर्ड प्रॉम्प्ट के बिना mysqldump कैसे करें?