INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
पर विचार करता है, तो ए और बी UNIQUE
क्षेत्र हैं, UPDATE
a = 1 OR b = 2
पर होता है। साथ ही जब स्थिति a = 1 OR b = 2
दो या दो से अधिक प्रविष्टियों से मिलती है, तो अपडेट केवल एक बार किया जाता है।
पूर्व यहां ईद और नाम UNIQUE
क्षेत्रों के साथ तालिका तालिका
Id Name Value
1 P 2
2 C 3
3 D 29
4 A 6
तो क्वेरी
INSERT INTO table (Id, Name, Value)
VALUES (1, C, 7)
है तो हम
Id Name Value
1 P 2
2 C 3
3 D 29
4 A 6
1 C 7
जो ईद और नाम की विशिष्टता का उल्लंघन करता हो। अब
INSERT INTO table (Id, Name, Value)
VALUES (1, C, 7)
ON DUPLICATE KEY UPDATE Value = 7
साथ हम कई कुंजी पर
Id Name Value
1 P 7
2 C 7
3 D 29
4 A 6
व्यवहार मिलता है निम्नलिखित
ON DUPLICATE KEY UPDATE
में UPDATE
अगर UNIQUE
क्षेत्र में से एक मूल्य सम्मिलित करने के लिए किया जाता है के बराबर होती है है। यहां, UPDATE
Id = 1 OR Name = C
पर किया गया है।यह
UPDATE table
SET Value = 7
WHERE Id = 1 OR Name = C
के बराबर है क्या होगा यदि मैं एक अद्यतन केवल चाहते हैं, के लिए या तो कुंजी
LIMIT
कीवर्ड के साथ UPDATE
बयान का उपयोग कर सकते
UPDATE table
SET Value = 7
WHERE Id = 1 OR Name = C
LIMIT 1;
Id Name Value
1 P 7
2 C 3
3 D 29
4 A 6
दे देंगे जो
क्या होगा यदि मैं एक अद्यतन केवल तभी दोनों कुंजी के लिए मान मिलान किया जाता है
एक समाधान चाहते ALTER TABLE
है और बनाने के PRIMARY KEY
(या विशिष्टता) दोनों क्षेत्रों पर काम करते हैं।
ALTER TABLE table
DROP PRIMARY KEY
ADD PRIMARY KEY (Id, Name);
अब,
INSERT INTO table (Id, Name, Value)
VALUES (1, C, 7)
ON DUPLICATE KEY UPDATE Value = 7
पर हम कोई डुप्लिकेट (दोनों कुंजी पर) पाया जाता है के बाद से
Id Name Value
1 P 2
2 C 3
3 D 29
4 A 6
1 C 7
मिलता है।
देखें आप प्राथमिक कुंजी के रूप में दो कॉलम के साथ एक मेज है, और पर नकली चाबी के साथ काम, पी कॉलम के लिए अद्वितीय सूचकांक जोड़ने से बचना चाहिए चाहते हैं, क्योंकि यह करता है, तो अद्यतन करेगा मूल्यों में पीके 1 या पीके 2 मौजूद हैं। – jloria
क्या दूसरे कॉलम पर अनन्य बाधा होने का कोई तरीका है, लेकिन ऐसा है कि यह इस डुप्लिकेट कुंजी अपडेट ऑपरेशन को प्रभावित नहीं करता है? इसका मतलब यह है कि यदि अद्वितीय बाधा पूरी नहीं होती है तो सम्मिलित या अद्यतन विफल हो जाता है। – CMCDragonkai