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) );
इसलिए, बहुत देर होने से पहले स्विच करें;-)