DB2 LUW合并语句并发

时间:2017-03-21 16:19:57

标签: sql merge db2 db2-luw

我想知道如何在DB2中有效地执行 insert-if-not-exists 操作,而不会导致唯一的约束违规。

我尝试在DB2 LUW中使用MERGE语句,但我担心重复插入的并发性。我在documentation中读到,更改隔离级别可能有助于解决这些错误。根据不同的堆栈溢出questionWITH RR选项似乎可以正常工作,但我想确切地知道。

RR隔离级别是否保证 insert-if-not-exists MERGE总是成功而没有约束违规错误?是否有较弱的水平可以提供相同的保证?并且是MERGE喜欢

MERGE INTO some_table t
USING (VALUES(?)) vals(id)
ON t.id = vals.id
WHEN NOT MATCHED THEN
  INSERT INTO some_table(id) VALUES(vals.id)
ELSE IGNORE
WITH RR

相当于具有相同隔离级别的条件插入?

INSERT INTO some_table(id) VALUES(?)
WHERE NOT EXISTS(
  SELECT 1 
  FROM some_table 
  WHERE id = ? 
  WITH RR
)

0 个答案:

没有答案