की बजाय दोनों कुंजी का उपयोग करने के लिए mysql निर्दिष्ट कैसे करूं एक अंतर, यह वही वाक्यविन्यास है। बस सुनिश्चित करें कि आपके पास कॉलम के रूप में निर्दिष्ट दोनों कुंजी हैं। उदाहरण के लिए:
REPLACE INTO `my_table` (`key1`, `key2`, `othercolumn1` /* , ... */)
VALUES ('widgets', 14, 'Blue widget with purple trim');
संपादित
यहाँ अपने परीक्षण मैं अपने परीक्षण डेटाबेस में भाग गया यकीन है कि मैं के बारे में अपने डेटा को नष्ट करने के लिए नहीं था बनाने के लिए है। बेशक, अगर आप अनिश्चित हैं तो मैं इसे आज़माने के लिए प्रोत्साहित करता हूं!
CREATE SCHEMA `my_testdb`;
USE `my_testdb`;
CREATE TABLE `my_table` (
`key1` VARCHAR(20) NOT NULL,
`key2` INTEGER NOT NULL,
`othercolumn1` VARCHAR(50),
CONSTRAINT PRIMARY KEY (`key1`, `key2`));
REPLACE INTO `my_table` (`key1`, `key2`, `othercolumn1`)
VALUES ('widgets', 14, 'Green widget with fuchsia trim');
REPLACE INTO `my_table` (`key1`, `key2`, `othercolumn1`)
VALUES ('widgets', 15, 'Yellow widget with orange trim');
REPLACE INTO `my_table` (`key1`, `key2`, `othercolumn1`)
VALUES ('thingamabobs', 14, 'Red widget with brown trim');
REPLACE INTO `my_table` (`key1`, `key2`, `othercolumn1`)
VALUES ('widgets', 14, 'Blue widget with purple trim');
SELECT * FROM `my_table`;
यह मेरा परिणाम है:
key1 key2 othercolumn1
widgets 14 Blue widget with purple trim
widgets 15 Yellow widget with orange trim
thingamabobs 14 Red widget with brown trim
किसी अन्य संपादन का
मुझे लगता है कि मैं देख रहा हूँ कि तुम क्या दस्तावेज में के बारे में बात कर रहे हैं, अद्वितीय स्तंभों पर भ्रम की स्थिति:
तालिका एक पंक्ति में एक से अधिक पुरानी पंक्ति को प्रतिस्थापित करने के लिए एक पंक्ति के लिए संभव है कई अद्वितीय इंडेक्स में नई पुरानी पंक्तियों के लिए कई अनन्य अनुक्रमणिका और नई पंक्ति डुप्लिकेट मान देती है। - MySQL प्रलेखन
एक नहीं बल्कि काल्पनिक परिस्थिति जिसमें पंक्ति आप संघर्ष न सिर्फ एक मौजूदा प्राथमिक कुंजी के साथ है, लेकिन अन्य विशिष्ट कॉलम के साथ साथ बदल रहे हैं और साथ ही की बात कर रहा है यही कारण है कि। यहाँ इस बिंदु को वर्णन करने के लिए एक उदाहरण है:
CREATE SCHEMA `my_testdb2`;
USE `my_testdb2`;
CREATE TABLE `my_table` (
`key1` VARCHAR(20) NOT NULL,
`key2` INTEGER NOT NULL,
`color` VARCHAR(20) NOT NULL UNIQUE,
`othercolumn1` VARCHAR(50),
CONSTRAINT PRIMARY KEY (`key1`, `key2`));
REPLACE INTO `my_table` (`key1`, `key2`, `color`, `othercolumn1`)
VALUES ('widgets', 14, 'green', 'Green widget with fuchsia trim');
REPLACE INTO `my_table` (`key1`, `key2`, `color`, `othercolumn1`)
VALUES ('widgets', 15, 'yellow', 'Yellow widget with orange trim');
REPLACE INTO `my_table` (`key1`, `key2`, `color`, `othercolumn1`)
VALUES ('thingamabobs', 14, 'red', 'Red widget with brown trim');
REPLACE INTO `my_table` (`key1`, `key2`, `color`, `othercolumn1`)
VALUES ('widgets', 14, 'yellow', 'Yellow widget with purple trim');
SELECT * FROM `my_table`;
सूचना है कि पिछले (key1
, key2
) प्राथमिक कुंजी के साथ आपरेशन न केवल संघर्ष की जगह के पहले REPLACE, लेकिन यह भी एक दूसरे का अनूठा रंग के साथ। इस मामले में, पिछले पंक्तियों के संचालन के पहले दोनों पंक्तियां हटा दी जाती हैं ताकि परिणाम कोई संघर्ष न हो। तुम सिर्फ दो पंक्तियों से खत्म करेंगे:
key1 key2 color othercolumn1
widgets 14 yellow Yellow widget with purple trim
thingamabobs 14 red Red widget with brown trim
दोनों (key1
, key2
) ('widgets', 14) और रंग के साथ पंक्ति के बराबर के साथ पंक्ति 'पीला' दूर वजह से जलकर खाक हो गयीं तालिका पर कई अद्वितीय बाधाओं के साथ विवादित नई पंक्ति के लिए।
आशा है कि इससे मदद मिलती है!
परिभाषा के अनुसार एक तालिका में केवल एक ही पीके हो सकता है। क्या आपका मतलब अद्वितीय कुंजी है? – Jason
मुझे पूरा यकीन है कि उसका मतलब बहु-स्तंभ प्राथमिक कुंजी था। –
आपके पास दो प्राथमिक कुंजी नहीं हो सकती हैं। क्या आपका मतलब है कि आपके पास यौगिक प्राथमिक कुंजी है? – Flimzy