Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists
2016-03-16 19:11
771 查看
Add a Column to a table if not exists
MySQL allows you to create a table if it does not exist, but does not provide a native way of a adding a column (i.e. a field) to an existing table with a test of whether the column already exists - so as to avoid an error if the column already exists. The ability to add a column if it does not exist can be useful for upgrade scripts and the like.The following script creates a stored procedure that allows a column to be added to a table but only if it does not already exist:
drop procedure if exists AddColumnUnlessExists; create procedure AddColumnUnlessExists( 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;
This stored procedure provides the functionality for "add column if not exists". To use the script call it with the name of the database, name of the table, name of the field and the field definition to use if the field is to be created. For example:
call AddColumnUnlessExists(Database(), 'accounts', 'dob', 'varchar(32) null');
which will add the field "
dob" to the table "
accounts" in the current database, unless it already exists, or
call AddColumnUnlessExists('GIS', 'boundaries', 'fillColour', 'int unsigned not null default 1');
which will add the field "
fillColour" to the table "
boundaries" in the database "
GIS" if it does not already exist.
If you want to drop the stored procedure after use then use:
drop procedure AddColumnUnlessExists;
相关文章推荐
- mysql主从不同步时,怎么恢复
- MySQL can’t specify target table for update in FROM clause
- MySQL 源码安装
- hibernate 插入数据mysql 表名关键字冲突
- 部署mysql集群基础环境
- mysql5.5笔记(安装)
- Mysql主主同步配置方法
- Percona Toolkit工具箱的安装与使用--完成复杂的mysql操作。
- mysql学习书籍
- mysql 读写分离 二进制日志恢复数据 在线支付
- mysql优化
- MySQL 中 GROUP BY 基本实现原理
- MySQL日志
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
- MySQL基于ROW格式的数据恢复
- mysql忘记root密码拯救方法(flush privileges) 及flush 命令
- MySQL安装初始化账户密码
- Mysql优化
- 一句sql搞定Mysql删除数据后自增列从1开始
- zabbix mysql调优