1. ホーム
  2. mysql

[解決済み] MySQLにカラムが存在する場合、ALTERを使用してカラムを削除する。

2022-12-06 15:28:30

質問

MySQL テーブルにカラムが存在する場合、ALTER を使用してカラムを削除するにはどうすればよいですか?

私は ALTER TABLE my_table DROP COLUMN my_column を使うこともできますが my_column が存在しない場合、エラーが発生します。条件付きでカラムを削除するための代替構文はありますか?

MySQLバージョン4.0.18を使用しています。

どのように解決するのですか?

MySQLの場合、ありません。 MySQL の機能要求 .

これを許可することは、間違いなく、とにかく本当に悪い考えです。 IF EXISTS は、(あなたにとって) 未知の構造を持つデータベースに対して破壊的な操作を実行していることを意味します。ローカルで素早く行う作業であれば許容できる状況もあるかもしれませんが、実稼働データに対して (移行などで) このようなステートメントを実行したくなった場合、火遊びをしているようなものです。

しかし、どうしてもと言うのであれば、クライアントで最初に存在を確認するか、エラーをキャッチすることは難しくありません。

MariaDBは10.0.2から以下もサポートしています。

DROP [COLUMN] [IF EXISTS] col_name 

すなわち

ALTER TABLE my_table DROP IF EXISTS my_column;

しかし、MySQL のいくつかのフォークのうちの 1 つだけがサポートする非標準的な機能に依存するのは、間違いなく悪い考えです。