1. 程式人生 > >MySQL修改表-防止SQL重複執行

MySQL修改表-防止SQL重複執行

--刪除列
drop PROCEDURE if EXISTS add_col_homework;
create procedure add_col_homework() BEGIN 
IF EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND table_name='mytable' AND COLUMN_NAME='mycolumn')
THEN 
   ALTER TABLE `mytable`  DROP COLUMN `mycolumn`;
END IF;  
END;
call add_col_homework(); 
drop PROCEDURE if EXISTS add_col_homework;


---修改列名
drop PROCEDURE if EXISTS add_col_homework;
create procedure add_col_homework() BEGIN 
IF EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND table_name='mytable' AND COLUMN_NAME='mycolumn')
THEN 
   ALTER TABLE `mytable`  change  column mycolumn  mycolumnOther  varchar(30) not null comment '修改註釋';
END IF;  
END;
call add_col_homework(); 
drop PROCEDURE if EXISTS add_col_homework;

-----修改列屬性--
drop PROCEDURE if EXISTS add_col_homework;
create procedure add_col_homework() BEGIN 
IF EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND table_name='mytable' AND COLUMN_NAME='mycolumn' and COLUMN_COMMENT='原有註釋' )
THEN 
   ALTER TABLE `mytable`  MODIFY `mycolumn` int not null comment '修改註釋';
END IF;  
END;
call add_col_homework(); 
drop PROCEDURE if EXISTS add_col_homework;

drop PROCEDURE if EXISTS add_col_homework;
create procedure add_col_homework() BEGIN 
IF not EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND table_name='mytable' AND COLUMN_NAME='mycolumn' AND COLUMN_TYPE='varchar(20)' and COLUMN_COMMENT='原有註釋')
THEN 
   ALTER TABLE `mytable`  MODIFY `mycolumn` varchar(20) not null comment '修改註釋';
END IF;  
END;
call add_col_homework(); 
drop PROCEDURE if EXISTS add_col_homework;

--新增列
drop PROCEDURE if EXISTS add_col_homework;
create procedure add_col_homework() BEGIN 
IF not EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND table_name='mytable' AND COLUMN_NAME='mycolumn')
THEN 
   ALTER TABLE `mytable`  add COLUMN `mycolumn` varchar(20) not null comment '註釋';
END IF;  
END;
call add_col_homework(); 
drop PROCEDURE if EXISTS add_col_homework;

最後,給出MySQL系統表連線:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html