Table of Contents
MySQL – ADD COLUMN IF NOT EXISTS
기본적으로 지원되지 않는 기능이다. (Maria DB 10.219 이후는 지원)
기능을 사용하려면 프로시저를 생성해야 한다.
sql_notes
는 프로시저가 없다는 경고를 비활성화시켜준다.
DELIMITER $$
SET sql_notes = 0$$
DROP PROCEDURE IF EXISTS AddColumn$$
SET sql_notes = 1$$
CREATE PROCEDURE AddColumn(
IN dbName TINYTEXT,
IN tableName TINYTEXT,
IN fieldName TINYTEXT,
IN fieldDef TEXT)
BEGIN
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME=fieldName
and TABLE_NAME=tableName
and TABLE_SCHEMA=dbName
)
THEN
SET @ddl=CONCAT('ALTER TABLE `',dbName,'`.`',tableName,
'` ADD COLUMN `',fieldName,'` ',fieldDef);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
END IF;
END$$
DELIMITER ;
CALL AddColumn('mydb', 'mytable', 'myfield', 'DECIMAL(18,0)');