私はそれらを作成しましたが、どれがどれであるのか忘れました。私はちょうど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';
これは、エレガントな出力を生成が、覚えやすいですしない:OPはこれがどうなる単一のテーブル、を求め
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';