H2:更改现有 table 的架构

H2: Change schema of an existing table

可以更改 H2 中现有 table 的架构吗?

例如,在我的项目中,我将 Postgres 中 table 的模式更改为:

ALTER TABLE my_table SET SCHEMA gestion;

但是在我对 H2 的测试中出现错误 expected "REFERENTIAL_INTEGRITY";

所以我尝试用

禁用REFERENTIAL_INTEGRITY

ALTER TABLE my_table SET REFERENTIAL_INTEGRITY FALSE;

但是没有结果,我也有同样的错误。

有什么想法吗?谢谢

不,目前不可能,H2 1.4.200 和从当前源编译的 H2 都不支持。 SQL 标准也没有定义这样的操作,它完全是特定于供应商的。

您只能创建一个新的table并将旧的table的内容复制到其中(例如CREATE TABLE gestion.my_table AS TABLE my_table,但是添加完整的定义会更安全table 这个命令)。您还需要为新 table 创建所有约束和索引。如果其他 table 引用了此 table,您还需要自行更新这些引用。之后你可以删除旧的 table.