मैंने उन्हें बनाया, लेकिन मैं भूल गया कि वे कौन हैं।मैं MySQL में किसी तालिका की अनन्य बाधाओं को कैसे दिखाऊं?
मैं बस के लिए
- उन्हें दिखाने चाहते हैं।
- किसी तालिका पर सभी बाधाओं को हटा दें।
मैंने उन्हें बनाया, लेकिन मैं भूल गया कि वे कौन हैं।मैं MySQL में किसी तालिका की अनन्य बाधाओं को कैसे दिखाऊं?
मैं बस के लिए
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = 'mysql'
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = 'table_name' and constraint_type = 'UNIQUE';
इस सुरुचिपूर्ण उत्पादन का उत्पादन नहीं करता है लेकिन याद करने के लिए आसान है:
SHOW CREATE TABLE table_name;
ओपी एक एकल तालिका, जो यह कर देगा के लिए कहा।
इसके अलावा, पिछले 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';