Search code examples
mysqlprocedureinformation-schema

MySQL Procedure: If column don't exists create it


I try to make procedure that create non-exists column in my MySQL table like here: MySQL add column if not exist

My procedure:

DELIMITER $$
CREATE PROCEDURE Alter_Table(IN _table_name TEXT,IN _column_name TEXT,IN _column_type TEXT)
BEGIN
    DECLARE _count INT;
    SET _count = (  SELECT COUNT(*) 
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE   TABLE_NAME = _table_name AND 
                            COLUMN_NAME = _column_name);
    IF _count = 0 THEN
        ALTER TABLE _table_name ADD COLUMN _column_name _column_type;
    END IF;
END $$
DELIMITER ;

But I have an error:

#1064 - Something is wrong in your syntax obok '_column_type; END IF; END' w linii 9

Anyone know why?


Solution

  • Ok... I make it in PHP...

    function alter_table($table_name, $column_name, $column_type) {
        $result = mysql_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS
                     WHERE TABLE_NAME = `$table_name` AND COLUMN_NAME = `$column_name`");
        if(!$result) {
            mysql_query("ALTER TABLE `$table_name`
                ADD COLUMN `$column_name` $column_type");
        }
    }