2011-07-31 20 views
6

अभी मेरे पास है:डुप्लिकेट कुंजी पर: बहु-स्तंभ अद्वितीय बाधा

INSERT INTO mytable (a,b,c,d) VALUES(1,2,3,4) 
    ON DUPLICATE KEY UPDATE c=VALUES(c),d=VALUES(d) 

जो काम करता है, तो a या bUNIQUE चाबियाँ हैं ...

लेकिन अब मैं अद्यतन करना चाहते केवल एक और पंक्ति जब जोड़ी (ए, बी) तालिका में मौजूद नहीं है (अन्यथा सम्मिलन छोड़ें)।

मूल रूप से (a,b) अद्वितीय, नहीं (a) या (b) हो shoud, लेकिन दोनों जुड़ा हुआ है।

उदाहरण के लिए इन पंक्तियों मान्य होगा

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 2 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

क्योंकि वहाँ 5,1, 5,2, 5.3, 7.1 आदि

लेकिन पंक्ति # यहाँ 2 # 1 पंक्ति की डुप्लीकेट विचार किया जाना चाहिए, ताकि पंक्ति # 1 अपडेट किया जाना चाहिए:

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 1 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

क्या यह संभव है?

उत्तर

13

b

ALTER TABLE tblname ADD UNIQUE (a,b) 
+0

लॉल धन्यवाद, मुझे विश्वास नहीं है कि मैं बहुत मूर्ख हूँ :) – Emma

1
CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b) 
1

यह ध्यान देने योग्य है कि यदि आप जोड़ने की कोशिश जोड़ें अद्वितीय लायक है के लिए (a,b) नहीं करने के लिए UNIQUE KEY बनाने के (ए, बी) वहाँ तालिका में डेटा है, जबकि, आप की संभावना हूँ एक डुप्लिकेट कुंजी त्रुटि प्राप्त करें। तालिका खाली करें, अद्वितीय अनुक्रमणिका जोड़ें, और यह काम करेगा।

संबंधित मुद्दे