2009-12-02 7 views
15

मैंने उन्हें बनाया, लेकिन मैं भूल गया कि वे कौन हैं।मैं MySQL में किसी तालिका की अनन्य बाधाओं को कैसे दिखाऊं?

मैं बस के लिए

  1. उन्हें दिखाने चाहते हैं।
  2. किसी तालिका पर सभी बाधाओं को हटा दें।

उत्तर

6
select distinct CONSTRAINT_NAME 
from information_schema.TABLE_CONSTRAINTS 
where CONSTRAINT_SCHEMA = 'mysql' 
42
select distinct CONSTRAINT_NAME 
from information_schema.TABLE_CONSTRAINTS 
where table_name = 'table_name' and constraint_type = 'UNIQUE'; 
2

इस सुरुचिपूर्ण उत्पादन का उत्पादन नहीं करता है लेकिन याद करने के लिए आसान है:

SHOW CREATE TABLE table_name; 
0

ओपी एक एकल तालिका, जो यह कर देगा के लिए कहा।

इसके अलावा, पिछले where खंड को हटाने के लिए एक डाटाबेस जो अद्वितीय की कमी के द्वारा संरक्षित हैं के लिए सभी स्तंभों दिखाएगा:

SELECT 
    CONSTRAINT_NAME, 
    TABLE_NAME, 
    COLUMN_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE 
    CONSTRAINT_NAME LIKE 'UNIQ%' 
    AND TABLE_SCHEMA = 'your_database_name' 
    AND TABLE_NAME = 'your_table_name'; 

दुर्भाग्य से mysql एक प्रश्न परिणाम के आधार पर अनुक्रमित को हटाने की सुविधा नहीं है। आप 2 प्रश्नों में सभी अद्वितीय कॉलम ड्रॉप करने के लिए निम्न क्वेरी के आउटपुट को निष्पादित कर सकते हैं:

SELECT CONCAT(
    'ALTER TABLE ', 
    TABLE_NAME, 
    ' DROP INDEX ', 
    CONSTRAINT_NAME, 
    '; -- drops ', 
    COLUMN_NAME, 
    ' constraint' 
) 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE 
    CONSTRAINT_NAME LIKE 'UNIQ%' 
    AND TABLE_SCHEMA = 'your_database_name'; 
संबंधित मुद्दे