如果不存在,我该如何添加列? 我试过这段代码:
IF EXISTS( SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'forwind.measuringdata_fino_10_00000000'
AND table_schema = 'forwind'
AND column_name != 'F1_USA(40)_u') THEN
ALTER TABLE `forwind.measuringdata_fino_10_00000000` ADD `F1_USA(40)_u` FLOAT NOT NULL default '0';
END IF;
但是我收到以下错误:
错误代码:1064您输入了错误 你的SQL语法;检查手册 对应于您的MySQL服务器 用于正确语法的版本 'IF EXISTS附近(SELECT NULL 来自INFORMATION_SCHEMA.COLUMNS
如果有人知道其他解决方案,那对我有好处!
答案 0 :(得分:7)
MySQL不支持这样的匿名IF语句。
您至少有3个选项可以解决此问题:
1)只需运行ALTER TABLE
语句,如果列已存在,则忽略Duplicate column name
错误。如果您在脚本中执行一堆DDL,则可以使用mysql -f
忽略错误并继续运行。
2)使用脚本语言(如bash,python,perl等)检查列是否存在,然后添加它(如果它尚不存在)。
3)在MySQL中创建一个存储过程以检查列是否存在,然后添加它(如果它尚不存在)。
P.S。顺便说一句,我建议不要在括号中添加括号,因为这会强制您在每次引用时引用列名。
答案 1 :(得分:0)
------Add an IpAddress column in ActionsTracking table if -----
DECLARE @tableName varchar(MAX) ='ActionsTracking'
DECLARE @columnName varchar(MAX) ='IpAddress'
IF EXISTS(SELECT 1 FROM sys.columns
WHERE Name = @columnName
AND Object_ID = Object_ID(@tableName))
PRINT 'Column Already Exists'
ELSE
BEGIN
EXEC('ALTER TABLE '+@tableName+'
ADD '+ @columnName +' varchar(15) null')
PRINT 'Column Added Sucessfully'
END