执行sql发生锁表的问题
执行以下sql经常会发生锁TBL_PRODUCT_PRINT 表,请大家帮我看看到底是因为什么原因?
UPDATE TBL_PRODUCT_PRINT BBB SET SELECT_FLAG=(CASE WHEN CUSTOMER_CODE IN ('C000000219') THEN 'Y' ELSE 'N' END)
WHERE EXISTS (
SELECT A.CUSTOMER_CODE AS ACCEPT_CODE
FROM TBL_REQUEST A, TBL_CUSTOMER C, TBL_ACCEPT F , TBL_ISSUE G
WHERE A.ACCEPT_CODE=BBB.ACCEPT_CODE AND A.CUSTOMER_CODE = C. CUSTOMER_CODE AND A.ACCEPT_CODE = F.ACCEPT_CODE AND F.ACCEPT_TYPE='1' AND F.PRODUCT_ENV = 'Y' AND A. ISSUE_ID = G.ISSUE_ID AND G.ISSUE_STATUS = 'Y' AND G.CONFIRM_STATUS = 'Y'
AND A.MEDIA_CODE = 'M006' AND A.ISSUE_DATE = to_date('2006/03/03','yyyy/mm/dd')
AND NOT EXISTS ( SELECT 1 FROM TBL_PRODUCT_PRINT WHERE TBL_PRODUCT_PRINT.CUSTOMER_CODE = A.CUSTOMER_CODE)
UNION
SELECT A.CUSTOMER_CODE AS ACCEPT_CODE
FROM TBL_PRODUCT_PRINT A, TBL_AREA B, TBL_CUSTOMER C, TBL_REQUEST D, TBL_ACCEPT F WHERE A.CUSTOMER_CODE=BBB.CUSTOMER_CODE AND A.CUSTOMER_CODE = C. CUSTOMER_CODE AND months_between(SYSDATE,A.CREATE_DATE)<=1 AND D.ACCEPT_CODE = F.ACCEPT_CODE AND F.ACCEPT_TYPE='1' AND F.PRODUCT_ENV = 'Y' AND A.CUSTOMER_CODE = D.CUSTOMER_CODE AND A.MEDIA_CODE = D.MEDIA_CODE AND A.ISSUE_DATE = D.ISSUE_DATE AND A.MEDIA_CODE = 'M006' AND A.ISSUE_DATE = to_date('2006/03/03','yyyy/mm/dd')
)