なぜ(答えは「私たちが完全に奇妙でbepsokeの設定...」)キーの名前を知らずにテーブルに(テーブルが存在する場合)テーブルに一意のキーをドロップする - キーを構成する列のみ。Mysql:キーの名前やキーの名前がわからない場合は、一意のキーを削除してください。
私は、この表
CREATE TABLE `my_table` (
`id` binary(36) NOT NULL,
`username` char(12) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`role` char(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username_2` (`username`,`role`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `username_3` (`username`),
UNIQUE KEY `username_4` (`username`),
)
を持っていると私は(username,role)
キーではなく、他の人をドロップしたいと思います(それが存在する場合のみが - !!私はそれを得る時間で、それはすでに削除されている場合があります)
今私は、制約の名前を知っているとき、私は
ALTER TABLE `my_table` DROP KEY `name_of_my_key`
キーを削除する方法を知っていると私は一意のキーが
SELECT EXISTS (SELECT constraint_name
FROM INFORMATION_SCHEMA.table_constraints
WHERE table_name = 'my_table' AND constraint_type='UNIQUE');
が存在するかどうかを確認する方法を知っています210
しかし、これは私が一意のキーを構成する列だけを知っているときは、私には役に立たない。
あなたの助けをお待ちしています...キーが存在することがわかったら、どの列が制約を作成してドロップすることができるかだけを知ることからconstraint_nameを派生させることができますか?制約名は、上記の3つの同じ(username)
キーのような同じキーを繰り返し追加できるため、制約名を通知します。
私が見つけた唯一の事は、Drop Foreign Key without knowing the name of the constraint? のようなものです。これは、制約名を取得する方法を示しているだけで、ドロップする制約をプログラムでは特定できません。
最後に、誰かがmySQLが同じキー(プライマリではない)を繰り返してテーブルに追加できる理由を知っていれば、私はすべての耳になるでしょう。 MySQL、あなたはとても狂っています。
おそらく、「DISTINCT」キーワードは役に立ちますか?いずれにしても、db構造のロジックの背後にある私は、まっすぐな答えを出すために奇妙な思考の一種です。 (なぜ動的にテーブルを変更したいのですか) – Xorifelse
私は言ったことはありませんでした;)しかし、あなたが尋ねると、あなたはテーブルを動的に変更したいと思います。ジョブ)同じテーブルを持つデータベースをセットアップし、異なる場所の1000にレプリカを配布した後、さまざまなパッチを配備しました。だから私たちは制約を持っているものもあれば、そうでないものもあることを知っています。デベロッパーであることが大好きではありませんか? –