Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists
2017-05-08 09:33
826 查看
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. Theability 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 Add a Column to a table if not exists
- MySQL对CREATE TABLE IF NOT EXISTS SELECT的处理
- mysql的CREATE TABLE IF NOT EXISTS 方法
- mysql的CREATE TABLE IF NOT EXISTS 方法
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
- mysql insert if not exists防止插入重复记录的方法
- MySQL在指定列之前或之后插入列 (Add a column to an existing MySQL table)
- sqlyog连接时2003(Can not connect to mysql server)错误处理方法
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
- mysql insert if not exists防止插入重复记录的方法
- mysql insert if not exists防止插入重复记录的方法(转)
- mysql insert if not exists防止插入重复记录的方法
- # mysql CREATE TABLE IF NOT EXISTS metadata lock坑
- add column for a table if this column not exists using T-SQL in SQLServer
- mysql insert if not exists防止插入重复记录的方法
- android sqlite 中 创建表 不要使用 "IF NOT EXISTS " + TABLE_NAME;
- MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)
- Column 'Column Name' does not belong to table Table
- 解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL不允许从远程访问的方法 .
- MySql Query To Get Important Column Properties Of A Table