java - H2 数据库 - 主键冲突替换

标签 java sql h2

如果正在插入一个条目并且它与具有相同 PRIMARY KEY 或 UNIQUE 值的另一个记录冲突,我想让 H2 数据库引擎替换冲突的条目。

我可以在 SQLite 中执行以下操作:

CREATE TABLE STACKOVERFLOW(FOO TEXT IDENTITY ON CONFLICT REPLACE);

这称为 conflict clause在 SQLite 中。

我可以在 H2 SQL 方言中复制此行为吗?

最佳答案

这可以通过使用 MERGE INTO 语句来实现,在我的例子中,我只需将 INSERT 语句替换为 MERGE INTO :

MERGE INTO TABLE STACKOVERFLOW('abc');
MERGE INTO TABLE STACKOVERFLOW('abc'); -- will not fail

关于java - H2 数据库 - 主键冲突替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285598/

相关文章:

java - 对象比较通用合约 : equals() and hashCode()

java - Android Firebase 查询多个值

java - 对所有 for 循环参数使用扫描仪输入

sql - INSERT INTO ... RETURNING 多列 (PostgreSQL)

sql - 使用H2 1.4数据库如果读取其他行我可以写入新行

java - 使用servlet在浏览器中禁用返回功能

javascript - 无需离开网页即可编辑列表

sql - 我可以在外键列中添加非原子值吗?

java - 内存数据库H2中的Spring Boot不会在初始化时从文件加载数据

sequence - 使用预定义的主键序列在h2数据库中创建表