DB2 -如何在删除前测试记录是否存在

djmepvbi  于 2022-11-23  发布在  DB2
关注(0)|答案(2)|浏览(173)

我花了一些时间尝试弄清楚如何构造一个DB2 SQL语句,该语句在删除记录之前首先检查该记录是否存在。

if exists(select 1 from my_table where my_table.my_field = current date) then
   delete from my_table where my_table.my_field = current date

TIA!

ar7v8xwq

ar7v8xwq1#

既然您说这是一个DataStage作业,那么有两种方法可以处理它:
1)添加一个消息处理程序,将该消息从错误转换为警告。请参阅this techdoc
2)(可能更简单)在delete语句周围添加一个简单的select语句,以捕获删除的行数。DataStage不会对此进行抱怨:

SELECT COUNT(*) AS DELETED
FROM OLD TABLE (
    DELETE FROM <your_table>
    WHERE <criteria>
)
t40tm48m

t40tm48m2#

如果我们只关心终端中的错误代码,其中删除查询不存在任何行,那么可以使用开始atomic Package 查询,如下所示

BEGIN ATOMIC 
    DELETE FROM <TABLE> WHERE <CONDITION>'; 
END

执行此操作时,不会在终端中返回错误代码。

相关问题