Onları ben yarattım ama hangileri olduklarını unuttum. MySQL'de bir tablonun benzersiz kısıtlarını nasıl gösteririm?
- onlara göstermek için
Sadece istiyorum.
- Bir tablodaki tüm kısıtlamaları kaldırın.
Onları ben yarattım ama hangileri olduklarını unuttum. MySQL'de bir tablonun benzersiz kısıtlarını nasıl gösteririm?
Sadece istiyorum.
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';
Bu zarif çıktı üretmek ancak hatırlaması kolay değildir: OP yapacak tek bir tablo, istedi
SHOW CREATE TABLE table_name;
. 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';