向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 及更高版本支援此語句,如果列不存在,可以新增列,無需儲存過程。
範例:
考慮這個範例表:
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中文網其他相關文章!