2009-10-14 17 views
115
Create Table: CREATE TABLE `fuinfo` (
    `fid` int(10) unsigned NOT NULL, 
    `name` varchar(40) NOT NULL, 
    `email` varchar(128) NOT NULL, 
    UNIQUE KEY `email` (`email`), 
    UNIQUE KEY `fid` (`fid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

मैं email पर अद्वितीय कुंजी को छोड़ना चाहता हूं, कैसे?MySQL में अद्वितीय कैसे छोड़ें?

उत्तर

234

, बस आप MySQL में सूचकांक हटाने के लिए निम्न SQL स्क्रिप्ट का उपयोग कर सकते हैं:

mysql> DROP INDEX email ON fuinfo; 

जहां:

alter table fuinfo drop index email; 
+20

ध्यान दें कि यदि आप 'ईमेल' कॉलम की एक विदेशी कुंजी मौजूद हैं (त्रुटि 150) तो आप इस तरह की कुंजी छोड़ने में सक्षम नहीं हो सकते हैं। इसे काम करने के लिए, पहले विदेशी कुंजी ड्रॉप करें, फिर इंडेक्स ड्रॉप करें, और बाद में विदेशी कुंजी को फिर से बनाएं। उदाहरण के लिए वैकल्पिक तालिका fuinfo डीआरओपी विदेशी कुंजी fk_name_for_email; –

52

एक बेहतर तरीका है जो आप तालिका में परिवर्तन करने की जरूरत नहीं है नहीं है ईमेल अद्वितीय कुंजी (इंडेक्स) का नाम है।

तुम भी ऐसा वापस ला सकता है:

mysql> CREATE UNIQUE INDEX email ON fuinfo(email); 

जहां IDEX के बाद ईमेल सूचकांक का नाम है और यह वैकल्पिक नहीं है। आप INDEX के बजाय कुंजी का उपयोग कर सकते हैं।

यह भी (निकालने के लिए) एकाधिक अद्वितीय indecies उस तरह बनाने के लिए संभव है:

mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid); 
mysql> DROP INDEX email_fid ON fuinfo; 

आप एकाधिक सूचकांक के नाम निर्दिष्ट नहीं किया है, तो आप इसे ऐसे ही निकाल सकते हैं:

mysql> DROP INDEX email ON fuinfo; 

जहां ईमेल कॉलम नाम है।

+3

इनमें से सभी वास्तव में एक वैकल्पिक तालिका करेंगे, इसलिए ऐसा नहीं है कि आप वास्तव में इससे परहेज कर रहे हैं। यह एक ही चीज़ के लिए सिर्फ एक अलग वाक्यविन्यास है। – mpeters

9

mysql> DROP INDEX ईमेल पर fuinfo;

जहां ईमेल अद्वितीय कुंजी (कॉलम नाम के बजाए) है। आपको

mysql> SHOW CREATE TABLE fuinfo; 

द्वारा अनन्य कुंजी का नाम यहां देखें, उदाहरण के लिए, आप अद्वितीय कुंजी का नाम देखते हैं, जो ईमेल_2 हो सकता है। तो ...

mysql> DROP INDEX email_2 ON fuinfo; 

mysql> DESCRIBE fuinfo; 

यह है कि सूचकांक TABLE_NAME

पर

+0

धन्यवाद यह जानकारी मुझे –

4

ड्रॉप सूचकांक column_name निकाल दिया जाता है डेटाबेस का चयन करें और क्वेरी एसक्यूएल tab.This फार्म दिखाना चाहिए विशेष स्तंभ के सूचकांक को हटा । यह php myadmin में मेरे लिए काम किया

2

यह दूसरों की मदद कर सकते हैं क्वेरी के नीचे

alter table fuinfo drop index fuinfo_email_unique 
3

उपयोग:

ALTER TABLE `table_name` DROP INDEX key_name; 

आप KEY_NAME नहीं जानते हैं तो पहला क्वेरी के नीचे की कोशिश, तो आप प्राप्त कर सकते हैं KEY_NAME।

SHOW CREATE TABLE table_name 

या

SHOW INDEX FROM table_name; 

आप निकालना/mysql तालिका से प्राथमिक कुंजी ड्रॉप, कि

ALTER TABLE `products` DROP INDEX `PRIMARY`; 

कोड से लिया के लिए क्वेरी के नीचे का उपयोग करें चाहते हैं: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

1

ALTER TABLE 0_value_addition_setup DROP INDEX value_code 
1

कोशिश करो एक स्तंभ के uique दूर करने के लिए:

ALTER TABLE `0_ms_labdip_details` DROP INDEX column_tcx 

भागो phpmyadmin में इस कोड और स्तंभ की अनूठी हटाने

1

MySQL 5.7.11 के लिए

चरण -1: सबसे पहले मिल अनोखा कुंजी

इस क्वेरी का उपयोग करें इसे पाने के लिए:

1,1) शो बनाने टीए बीएलई उपयोगकर्ता;

पिछले में, यह इस तरह होगा:

.....

.....

अद्वितीय कुंजी UK_8bv559q1gobqoulqpitq0gvr6 (phoneNum)

....

....

चरण 2: यू को हटाएं इस सवाल से निक की कुंजी।

वैकल्पिक तालिका उपयोगकर्ता ड्रॉप INDEX UK_8bv559q1gobqoulqpitq0gvr6;

चरण -3:, टेबल की जानकारी की जाँच करें कि इस प्रश्न के द्वारा:

DESC उपयोगकर्ता;

यह दिखाना चाहिए कि सूचकांक

सब कुछ है।

0
ALTER TABLE [table name] DROP KEY [key name]; 

यह काम करेगा।

+0

मदद करती है यह प्रश्न का उत्तर नहीं देती है। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (https://stackoverflow.com/help/whats-reputation) हो जाने पर आप [किसी भी पोस्ट पर टिप्पणी कर सकेंगे] (https: // stackoverflow।com/मदद/विशेषाधिकार/टिप्पणी); इसके बजाय, [उन उत्तरों को प्रदान करें जिन्हें पूछताछ से स्पष्टीकरण की आवश्यकता नहीं है] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-कर-बजाय)। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/18374275) – Mamun

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