2012-11-25 24 views
5

वर्तमान में मैं अपने DB में इस तालिका है:MySQL अद्वितीय स्तंभ स्ट्रिंग

CREATE TABLE `twMCUserDB` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `mc_userName` text NOT NULL, 
    `mc_userPass` text NOT NULL, 
    `tw_userName` text NOT NULL, 
    `tw_userPass` text NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 

अब जब कि स्तंभ mc_userName (सिर्फ आईडी की तरह) के लिए अद्वितीय हो जाएगा मुझे क्या करना चाहते हैं। लेकिन mc_userName एक स्ट्रिंग होना चाहिए।

अब मैं यह भी प्राथमिक कुंजी करने की कोशिश की थी, लेकिन बात नहीं बनी ...

तो तुम लोगों को मेरे सवाल का पालन है:

मैं मेज पर डेटा को जोड़ते हैं, क्या मुझे पहले यह जांचना है कि mc_userName पहले से मौजूद है या नहीं? या माइस्क्ल में कोई भी अंतर्निहित फ़ंक्शन है, जिसका उपयोग मैं कर सकता हूं (जैसे सम्मिलित क्वेरी में, या कहीं और)

उत्तर

6

सिर्फ UNIQUE

`mc_userName` text NOT NULL UNIQUE, 

या

जोड़ने
CREATE TABLE `twMCUserDB` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `mc_userName` text NOT NULL, 
    `mc_userPass` text NOT NULL, 
    `tw_userName` text NOT NULL, 
    `tw_userPass` text NOT NULL, 
    PRIMARY KEY (`id`), 
    CONSTRAINT tb_uq UNIQUE (mc_userName) 
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 
+0

मैं उस कॉलम से अनन्य कैसे जोड़ सकता हूं? मैं Navicat डेटाबेस संपादक, और phpmyadmin के रूप में उपयोग कर रहा हूं, लेकिन ऐसा कुछ नहीं ढूंढ सकता जो इसे संभाल सकता है ... – Mathlight

+0

आप इस डीडीएल को चलाकर तालिका को बदलने का प्रयास कर सकते हैं: 'वैकल्पिक तालिका twMCUserDB अनन्य tb_uq (mc_userName) जोड़ें –

+0

यह यह देता है: '[Err] 1170 - BLOB/टेक्स्ट कॉलम 'mc_userName' कुंजी लंबाई के बिना कुंजी विनिर्देश में उपयोग किया जाता है ' – Mathlight

1

आप आईडी के बजाय प्राथमिक कुंजी 'mc_userName' क्यों नहीं बनाते? इस पोस्ट में वर्णित अनुसार आपको डेटा प्रकार का mc_userName VARCHAR में बदलना होगा: MySQL error: key specification without a key length। वैकल्पिक रूप से, आईडी और उपयोगकर्ता नाम युक्त एक समग्र प्राथमिक कुंजी बनाएं।

यदि आप डेटाबेस के डिज़ाइन के कारण ऐसा नहीं कर सकते हैं तो क्वेरी में EXISTS कीवर्ड का उपयोग करें। अधिक जानकारी के लिए यहां एक नज़र: http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html

+0

मैं नहीं कर सकता है कि, 'MySQL त्रुटि 1170 क्योंकि मैं त्रुटि मिलती है: ब्लॉब/पाठ कुंजी की लंबाई के बिना कुंजी विशिष्टता में प्रयुक्त कॉलम ... और मैं उस लिंक पर एक नज़र डालेंगे – Mathlight

+0

आप क्या नहीं कर सकते? – w0051977

+0

क्षमा करें, मेरा मतलब है कि पहला भाग ... mc_user को आईडी की बजाय प्राथमिक कुंजी नाम दें .... मुझे – Mathlight

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