मान लीजिए कि मेरे पास दो कॉलम के साथ एक MySQL तालिका है: ए और बी। क्या यह एक अनूठी कुंजी हो सकती है ताकि मैं केवल ए या बी (पूरी तालिका में एक बार) में केवल एक बार मूल्य डाल सकूं?पूरे mysql तालिका पर अद्वितीय कुंजी?
तो यदि कॉलम ए में 'qwe' होता है और बी में 'asd' होता है तो इन दो मानों को या तो कॉलम में अब सम्मिलित नहीं किया जा सकता है।
इस काम नहीं करेगा:
UNIQUE KEY `A` (`A`,`B`),
UNIQUE KEY `A_2` (`A`),
UNIQUE KEY `B` (`B`),
UNIQUE KEY `B_2` (`B`,`A`)
धन्यवाद।
संपादित करें:
delimiter |
create trigger unique_check before insert on mytable
for each row begin
declare alreadyexists integer;
select count(*) > 0 into alreadyexists from mytable
where A=NEW.B or B=NEW.A;
IF alreadyexists = 1 THEN begin
DECLARE dummy INT;
SELECT 'A OR B already exists' INTO dummy FROM mytable
WHERE nonexistent = 'value';
end;
END IF;
END;|
हालांकि, मैं 'ए या बी पहले से मौजूद है' नहीं दिख रहा है त्रुटि संदेश है, लेकिन:
त्रुटि मैं निम्नलिखित ट्रिगर के साथ यह पूरा करने में सक्षम था 1054 (42 एस 22): 'खंड'
में अज्ञात कॉलम 'nonexistent' में अज्ञात कॉलम 'nonexistent'
एक और विकल्प कॉलम 'मान',' ए', 'बी' के साथ 'ए' और' बी' बिट्स के साथ एक तालिका हो सकता है, और तब जब मान (जो अद्वितीय होना चाहिए) इनपुट है एक या बी को 1 भी सेट करता है। मुझे लगता है कि अगर कोई व्यक्ति 'ए' और 'बी' दोनों के लिए 1 में डालता है तो यह समस्या तब भी देता है, लेकिन यह एक और तरीका है – Harold