HSQLDB добавить столбец в таблицу, если не существует - PullRequest
0 голосов
/ 03 мая 2019

Попытка добавить столбец 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 Ответ

1 голос
/ 04 мая 2019

получил ответ в списке рассылки hsqldb (https://sourceforge.net/p/hsqldb/mailman/message/36657341/):

Хотя мы можем добавить IF NOT EXISTS в большинство операторов создания объектов базы данных, это невозможно для операторов ALTER.

Также невозможно использовать операторы DDL внутри ПРОЦЕДУРЫ.

Мы можем добавить одну из этих возможностей в следующую версию 2.5.0 в ближайшие дни.

Так что в настоящее время это явно невозможно.

...