
向MySQL 表中新增不存在的欄位
在MySQL 中,只有在下列情況下才會動態新增欄位:它還不存在。有幾種方法可以安全地實現此目的。
預存程序方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 ):
1 | ALTER TABLE my_table ADD COLUMN IF NOT EXISTS new_column <column_definition>;
|
登入後複製
MySQL 8 及更高版本支援此語句,如果列不存在,可以新增列,無需儲存過程。
範例:
考慮這個範例表:
1 2 3 4 | CREATE TABLE IF NOT EXISTS `my_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL
);
|
登入後複製
要新增年齡列(如果不存在),可以使用下列指令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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中文網其他相關文章!