Oracle合并语句面临死锁问题

问题描述

下面给出了一个简单的合并语句。但有时会面临死锁问题。不知道如何解决。我的代码是否需要任何更改。请建议。

MERGE INTO test1 trgt USING (
  SELECT
    serial_ID,SYstem_STATUS,ITEM_STATUS,STATUS,(
      CASE
        WHEN STATUS IN ('INVALID','S001')
        AND ITEM_STATUS IN ('INVALID','S001') THEN 'INVALID'
        ELSE coalesce(ITEM_STATUS,STATUS)
      END
    ) change_status
  FROM
    test1
) src ON (trgt.serial_ID = src.serial_ID)
WHEN MATCHED THEN
UPDATE
SET
  trgt.STATUS = src.change_status,trgt.update_date = CASE
    WHEN upper(nvl(trgt.STATUS,'*')) <> upper(nvl(src.change_status,'*')) THEN SYSDATE
    ELSE trgt.update_date
  END,trgt.update_user = CASE
    WHEN upper(nvl(trgt.STATUS,'*')) THEN 'CHANGED_STATUS_UPDATE'
    ELSE trgt.update_user;

由于此问题不经常发生,因此无法复制。请提出问题的修复建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)