· 8 years ago · Jun 18, 2018, 12:00 AM
1DROP PROCEDURE IF EXISTS AddColumn;
2DELIMITER '//'
3
4CREATE PROCEDURE AddColumn(
5 IN dbName TINYTEXT,
6 IN tableName TINYTEXT,
7 IN fieldName TINYTEXT,
8 IN fieldDef TEXT)
9BEGIN
10 IF NOT EXISTS (
11 SELECT * FROM INFORMATION_SCHEMA.COLUMNS
12 WHERE COLUMN_NAME=fieldName
13 and TABLE_NAME=tableName
14 and TABLE_SCHEMA=dbName
15 )
16 THEN
17 SET @ddl=CONCAT('ALTER TABLE `',dbName,'`.`',tableName,
18 '` ADD COLUMN `',fieldName,'` ',fieldDef);
19 PREPARE stmt FROM @ddl;
20 EXECUTE stmt;
21 END IF;
22END;
23//
24
25DELIMITER ';'
26
27CALL AddColumn('mydatabase', 'mytable', 'newfield', 'INT UNSIGNED NOT NULL DEFAULT 1');