如果表中不存在,请添加一列

时间:2014-02-28 08:27:11

标签: mysql

我想添加一个列,只有当同名列不存在时才会在表中添加 更改表tablename 添加col varchar(250)

2 个答案:

答案 0 :(得分:1)

我认为你不能只执行你的SQL并在列已经存在时检索错误。

另一方面,如果您不想在MySQL端遇到可能的错误情况,您可以尝试类似(动态SQL):

SET @query = (SELECT
    IF((SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=database() AND      
     TABLE_NAME = 'YOUR_TABLE' AND COLUMN_NAME = 'COL')=0,
     CONCAT('ALTER TABLE YOUR_TABLE ADD COLUMN COL varchar(255)'),
 'SELECT ''ALREADY EXISTS'''
 ));
PREPARE st FROM @query;
EXECUTE st;

首先,您将生成一个包含列添加SQL或虚拟SQL的SQL,具体取决于您是否已在INFORMATION_SCHEMA中拥有目标列。

PREPARE

EXECUTE 

语句用于执行该查询。

答案 1 :(得分:0)

使用INFORMATION_SCHEMA数据库

SELECT 
count(*) 
FROM
information_schema.COLUMNS
WHERE
information_schema.TABLE_SCHEMA=DB name
AND information_schema.TABLE_NAME=table name
AND information_schema.COLUMN_NAME=col name

如果count大于0,则创建列,否则