HSQLDB将列添加到表(如果不存在)

时间:2019-05-03 20:35:05

标签: sql hsqldb

尝试将列column1添加到table1(如果尚不存在):

CREATE PROCEDURE column_present()
        MODIFIES SQL DATA
    BEGIN ATOMIC
        DECLARE column_count integer;
        set column_count = select COUNT(*) from information_schema.system_columns Where table_name = 'table1' and column_name = 'column1';
        if column_count = 0 then alter table table1 ADD column1 integer; end if;
    END;

导致:

[2019-05-03 22:28:13] [42581][-5581] unexpected token: ALTER : line: 6
[2019-05-03 22:28:13] java.lang.RuntimeException: org.hsqldb.HsqlException: unexpected token: ALTER : line: 6
[2019-05-03 22:28:13]   at org.hsqldb.error.Error.parseError(Unknown Source)

在HSQLDB中的现有表中创建列的正确方法是什么(如果尚不存在)?

请注意:忽略创建错误(如果已存在)不是我的选择。

1 个答案:

答案 0 :(得分:1)

在hsqldb邮件列表(https://sourceforge.net/p/hsqldb/mailman/message/36657341/)上得到答案:

  

尽管我们可以将IF NOT EXISTS添加到大多数数据库对象创建中   语句,这对于ALTER语句是不可能的。

     

在过程中也不能使用DDL语句。

     

我们可能会将这些功能之一添加到下一个版本2.5.0中,   未来的日子。

所以目前显然不可能。