尝试将列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中的现有表中创建列的正确方法是什么(如果尚不存在)?
请注意:忽略创建错误(如果已存在)不是我的选择。
答案 0 :(得分:1)
在hsqldb邮件列表(https://sourceforge.net/p/hsqldb/mailman/message/36657341/)上得到答案:
尽管我们可以将IF NOT EXISTS添加到大多数数据库对象创建中 语句,这对于ALTER语句是不可能的。
在过程中也不能使用DDL语句。
我们可能会将这些功能之一添加到下一个版本2.5.0中, 未来的日子。
所以目前显然不可能。