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.
可以更改 H2 中现有 table 的架构吗?
例如,在我的项目中,我将 Postgres 中 table 的模式更改为:
ALTER TABLE my_table SET SCHEMA gestion;
但是在我对 H2 的测试中出现错误 expected "REFERENTIAL_INTEGRITY";
所以我尝试用
禁用REFERENTIAL_INTEGRITYALTER 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.