Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql DB2LUW合并语句并发性_Sql_Merge_Db2_Db2 Luw - Fatal编程技术网

Sql DB2LUW合并语句并发性

Sql DB2LUW合并语句并发性,sql,merge,db2,db2-luw,Sql,Merge,Db2,Db2 Luw,我想知道如何在DB2中高效地执行insert if not exists操作,而不会导致唯一的约束冲突 我尝试在DB2LUW中使用MERGE语句,但我担心重复插入的并发性。我在文章中读到,更改隔离级别可能有助于解决这些错误。根据不同的堆栈溢出,WITH RR选项似乎可以工作,但我想确定一下 RR隔离级别是否能保证insert if not exists的MERGE始终成功,而不会出现约束冲突错误?是否存在提供相同保证的较弱水平?并且是一个合并类似 MERGE INTO some_table t

我想知道如何在DB2中高效地执行insert if not exists操作,而不会导致唯一的约束冲突

我尝试在DB2LUW中使用
MERGE
语句,但我担心重复插入的并发性。我在文章中读到,更改隔离级别可能有助于解决这些错误。根据不同的堆栈溢出,
WITH RR
选项似乎可以工作,但我想确定一下

RR
隔离级别是否能保证insert if not exists的
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
)

评论。我总是在不存在的地方使用insert,因为它适用于DB2以外的数据库。@danny117 MERGE是添加到SQL2003标准中的,如果您使用的是不支持它的数据库……也许是升级的时候了?