检查列是否存在,然后从 table 更改列?
Check if column exists then alter column from the table?
我想编写 sql 脚本来检查 table 中是否存在列,然后如果前面的语句为真则删除该列。我使用的数据库是 Sybase ASE,这是我尝试使用的代码:
IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
BEGIN
ALTER TABLE security DROP maiden_name
END
上面的代码我第一次成功执行运行。我第二次得到错误:
Invalid column name 'maiden_name'
如果列不存在,ALTER TABLE
代码块不应 运行。有没有办法实现这个是Sybase?谢谢。
你可以使用动态 SQL:
IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
BEGIN
EXEC('ALTER TABLE security DROP maiden_name')
END;
问题是解析器在编译阶段试图解析ALTER
,如果该列不存在就会出错。
我想编写 sql 脚本来检查 table 中是否存在列,然后如果前面的语句为真则删除该列。我使用的数据库是 Sybase ASE,这是我尝试使用的代码:
IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
BEGIN
ALTER TABLE security DROP maiden_name
END
上面的代码我第一次成功执行运行。我第二次得到错误:
Invalid column name 'maiden_name'
如果列不存在,ALTER TABLE
代码块不应 运行。有没有办法实现这个是Sybase?谢谢。
你可以使用动态 SQL:
IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
BEGIN
EXEC('ALTER TABLE security DROP maiden_name')
END;
问题是解析器在编译阶段试图解析ALTER
,如果该列不存在就会出错。