2009-12-02 14 views

cevap

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

Bu zarif çıktı üretmek ancak hatırlaması kolay değildir: OP yapacak tek bir tablo, istedi

SHOW CREATE TABLE table_name; 
0

. Benzersiz kısıtlamaları ile korunan bir veritabanı için tüm sütun gösteren son where maddesini kaldırarak ek olarak

:

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'; 

Maalesef MySQL sorgu sonucuna dayanarak endeksler çıkarılmasını kolaylaştırmak değildir. Tüm sorguları 2 sorguda bırakmak için aşağıdaki sorgu çıktısını çalıştırabilirsiniz:

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'; 
İlgili konular