MySQL – ADD COLUMN IF NOT EXISTS

By | 2025년 2월 24일
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)');

답글 남기기