【问题标题】:Check if column exists then alter column from the table?检查列是否存在然后从表中更改列?
【发布时间】:2020-08-04 04:43:22
【问题描述】:

我想编写 sql 脚本来检查表中是否存在列,如果前面的语句为真,则删除该列。我使用的数据库是 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 sybase sap-ase


    【解决方案1】:

    您可以使用动态 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,如果该列不存在就会报错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2017-04-27
      • 2019-03-26
      • 2021-06-02
      • 2012-04-15
      • 2015-03-27
      • 1970-01-01
      相关资源
      最近更新 更多