1. ホーム
  2. mysql

[解決済み] MySQL、SQLでテーブルにカラムが存在するかどうかを確認する

2022-05-11 05:59:50

質問

MySQL の特定のテーブルに特定のカラムがあるかどうかをチェックし、ない場合は作成するクエリを作成しようとしています。そうでなければ何もしません。これは、どのエンタープライズクラスのデータベースでも本当に簡単な手順ですが、MySQL は例外のようです。

私は次のようなことを考えました。

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
           WHERE TABLE_NAME='prefix_topic' AND column_name='topic_last_update') 
BEGIN 
ALTER TABLE `prefix_topic` ADD `topic_last_update` DATETIME NOT NULL;
UPDATE `prefix_topic` SET `topic_last_update` = `topic_date_add`;
END;

はうまくいくのですが、ひどく失敗します。何か方法があるのでしょうか?

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

これは私のためによく動作します。

SHOW COLUMNS FROM `table` LIKE 'fieldname';

PHPの場合、次のようになります。

$result = mysql_query("SHOW COLUMNS FROM `table` LIKE 'fieldname'");
$exists = (mysql_num_rows($result))?TRUE:FALSE;