gpt4 book ai didi

db2 - 试图在 DB2 插入中避免 -803

转载 作者:行者123 更新时间:2023-12-04 16:56:43 25 4
gpt4 key购买 nike

我正在尝试插入一行,该行可能已经存在,也可能不存在。如果它确实存在,我想避免首先选择它和/或获得 -803。我做了一些研究并尝试了 ignore 和 merge 语句,但一直在两者上出现语法错误。在任何情况下,我都不会尝试从另一个表复制数据 - 因此,合并并不是很合适。
在 DB2 SQL 中是否有某种方法可以仅发出防故障插入而不必对此进行编码?换句话说,是否有一些插入语法可以保证如果数据不存在就会被添加或者即使它存在也会返回零状态?

最佳答案

MERGE 是合适的,因为您可以在 USING 子句中动态提供值(参见 http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0010873.htm 中的示例 5)。

但是 MERGE 是 DB2 V8.2 的一个特性!您可能使用的是 V8.1,不是吗?

如果您像这样实现存在检查:

SELECT
if (found) UPDATE else INSERT

注意并发问题:两个并发线程可能都找不到列,然后都尝试插入,即使在上述代码周围存在事务。为确保不会发生这种情况,您需要在上述 SELECT 语句中使用 WITH RR USE AND KEEP UPDATE LOCKS 获取带有可重复读取的更新锁。 .

关于db2 - 试图在 DB2 插入中避免 -803,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058895/

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