MySQL: ALTER TABLE IF NOT EXISTS を使用した条件付きカラムの追加
MySQL では、テーブル構造を変更するには、多くの場合、カラムの追加または削除が必要になります。ただし、指定された列がすでに存在するか存在しない場合、そのような操作は失敗する可能性があります。このシナリオに対処するために、MySQL では、ALTER TABLE IF NOT EXISTS 構文を使用して、カラムが存在しない場合にのみカラムを追加する条件付きの方法を提供しています。
問題ステートメント
検討次のタスク: settings という名前のテーブルを変更して、multi_user という列をデフォルト値の TINYINT(1) として追加します。 1 ただし、列がまだ存在しない場合のみ。 ADD COLUMN IF NOT EXISTS 構文や条件付き IF ステートメントを使用したストアド プロシージャなど、さまざまなアプローチを使用した多くの試行は失敗しました。
解決策
条件付き追加するにはALTER TABLE IF NOT EXISTS を使用する列の場合は、次に従ってください手順:
IF NOT EXISTS( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'settings' AND table_schema = 'database_name' AND column_name = 'multi_user') THEN
ALTER TABLE `settings` ADD `multi_user` int(1) NOT NULL default '0';
例
作成できるストアド プロシージャの例を次に示します:
DELIMITER $$ CREATE PROCEDURE Alter_Table() BEGIN IF NOT EXISTS( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'settings' AND table_schema = 'database_name' AND column_name = 'multi_user') THEN ALTER TABLE `settings` ADD `multi_user` int(1) NOT NULL default '0'; END IF; END $$ DELIMITER ;
このプロシージャmulti_user 列が設定テーブルに存在するかどうかを確認します。存在しない場合は列が追加されます。それ以外の場合、操作はスキップされます。
以上が「ALTER TABLE」を使用して MySQL テーブルに条件付きで列を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。