MySQL テーブルが存在しない場合に列を追加する
MySQL では、次の場合にのみテーブルに列を動的に追加できます。それはすでに存在しません。これを安全に実現するには、いくつかの方法があります。
ストアド プロシージャ メソッド:
DELIMITER $$ DROP PROCEDURE IF EXISTS add_column_if_not_exists $$ CREATE PROCEDURE add_column_if_not_exists() BEGIN IF NOT EXISTS ( SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'new_column' AND TABLE_NAME = 'my_table' ) THEN ALTER TABLE my_table ADD COLUMN new_column <column_definition>; END IF; END $$ CALL add_column_if_not_exists() $$ DELIMITER ;
このストアド プロシージャは、IF を使用して列が既に存在するかどうかを確認し、列を追加するだけです。
条件付き ALTER TABLE ステートメント (MySQL 8) ):
ALTER TABLE my_table ADD COLUMN IF NOT EXISTS new_column <column_definition>;
このステートメントは MySQL 8 以降でサポートされており、ストアド プロシージャを必要とせずに列が存在しない場合に列を追加できます。
例:
例を考えてみましょうtable:
CREATE TABLE IF NOT EXISTS `my_table` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL );
年齢列が存在しない場合に追加するには、次を使用できます:
DELIMITER $$ DROP PROCEDURE IF EXISTS add_age_column $$ CREATE PROCEDURE add_age_column() BEGIN IF NOT EXISTS ( SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'age' AND TABLE_NAME = 'my_table' ) THEN ALTER TABLE my_table ADD COLUMN age INT NOT NULL DEFAULT 0; END IF; END $$ CALL add_age_column() $$ DELIMITER ;
以上がMySQL 列が存在しない場合にのみ追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。