gpt4 book ai didi

java - ALTER TABLE CREATE CONSTRAINT IF NOT EXIST 可能吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:34 25 4
gpt4 key购买 nike

我有一个应用程序可以启动 (AppStarter) 带有网络应用程序的网络服务器。 Web 应用程序具有迁移脚本 (flyway)。

我想通过 JDBC 从 AppStarter 将一些数据写入表中。但如果表不存在,我想创建它。该表也有一些限制。

在 AppStarter 中,我执行以下命令:

CREATE CACHED TABLE PUBLIC.CORE_USERROLE_TO_PARAMETER (
ID VARCHAR(32) PRIMARY KEY NOT NULL,
VERSION INTEGER,
USER_ID VARCHAR(32)NOT NULL,
ROLE_ID VARCHAR(32) NOT NULL,
PARAMETER VARCHAR(255) NOT NULL
);

ALTER TABLE PUBLIC.CORE_USERROLE_TO_PARAMETER ADD CONSTRAINT PUBLIC.CURTBP_USER_ID FOREIGN KEY(USER_ID) REFERENCES PUBLIC.CORE_USER(ID) NOCHECK;
ALTER TABLE PUBLIC.CORE_USERROLE_TO_PARAMETER ADD CONSTRAINT PUBLIC.CURTBP_ROLE_ID FOREIGN KEY(ROLE_ID) REFERENCES PUBLIC.CORE_USER_ROLE(ID) NOCHECK;

Web 应用程序还从该表中读取一些信息并创建表。现在我有一个sql迁移脚本

CREATE CACHED TABLE IF NOT EXISTS PUBLIC.CORE_USERROLE_TO_PARAMETER (
ID VARCHAR(32) PRIMARY KEY NOT NULL,
VERSION INTEGER,
USER_ID VARCHAR(32)NOT NULL,
ROLE_ID VARCHAR(32) NOT NULL,
PARAMETER VARCHAR(255) NOT NULL
);

但是,只有当它们不存在时,我该如何创建约束?

提前致谢

目前,如果约束存在,我可以得到

select * from INFORMATION_SCHEMA.CONSTRAINTS WHERE CONSTRAINT_NAME='CURTRP_USER_ID'

但是我如何将其构建到带有 H2 的 if 查询中

编辑:我可以将约束部分全部移到迁移脚本中,但这似乎有点不对劲。

我正在使用 H2 数据库。

最佳答案

根据我的评论,这应该是可能的:

ALTER TABLE PUBLIC.CORE_USERROLE_TO_PARAMETER
ADD CONSTRAINT IF NOT EXISTS PUBLIC.CURTBP_USER_ID
FOREIGN KEY(USER_ID) REFERENCES PUBLIC.CORE_USER(ID) NOCHECK;

ALTER TABLE PUBLIC.CORE_USERROLE_TO_PARAMETER
ADD CONSTRAINT IF NOT EXISTS PUBLIC.CURTBP_ROLE_ID
FOREIGN KEY(ROLE_ID) REFERENCES PUBLIC.CORE_USER_ROLE(ID) NOCHECK;

关于java - ALTER TABLE CREATE CONSTRAINT IF NOT EXIST 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com