我想添加一个列,只有当同名列不存在时才会在表中添加 更改表tablename 添加col varchar(250)
答案 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,则创建列,否则