2 つの update query があり、どちらも同じ条件を使用してデータを取得しています。1 つのクエリが実行されると、条件によってレコードが返されなくなります。最初のクエリ
UPDATE catentdesc
SET PUBLISHED = 0
WHERE CATENTRY_ID IN (
SELECT CATENTRY.CATENTRY_ID
FROM CATENTDESC,
CATENTRY
WHERE CATENTRY.catenttype_id = 'ProductBean'
AND CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID
AND catentry.buyable = 1
AND catentdesc.published = 1
AND CATENTRY.CATENTRY_ID IN (
SELECT CATENTRY_ID
FROM CATGPENREL
WHERE CATALOG_ID = 10001
)
AND catentry.markfordelete = 0 minus
SELECT CATENTRY.CATENTRY_ID
FROM CATENTDESC,
CATENTRY
WHERE CATENTRY.catenttype_id = 'ProductBean'
AND CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID
AND catentry.buyable = 1
AND catentdesc.published = 1
AND CATENTRY.CATENTRY_ID IN (
SELECT CATENTRY_ID
FROM CATGPENREL
WHERE CATALOG_ID = 10051
)
AND catentry.markfordelete = 0
)
2 番目のクエリ
UPDATE catentry
SET CATENTRY.BUYABLE = 0
WHERE CATENTRY_ID IN (
SELECT CATENTRY.CATENTRY_ID
FROM CATENTDESC,
CATENTRY
WHERE CATENTRY.catenttype_id = 'ProductBean'
AND CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID
AND catentry.buyable = 1
AND catentdesc.published = 1
AND CATENTRY.CATENTRY_ID IN (
SELECT CATENTRY_ID
FROM CATGPENREL
WHERE CATALOG_ID = 10001
)
AND catentry.markfordelete = 0 minus
SELECT CATENTRY.CATENTRY_ID
FROM CATENTDESC,
CATENTRY
WHERE CATENTRY.catenttype_id = 'ProductBean'
AND CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID
AND catentry.buyable = 1
AND catentdesc.published = 1
AND CATENTRY.CATENTRY_ID IN (
SELECT CATENTRY_ID
FROM CATGPENREL
WHERE CATALOG_ID = 10051
)
AND catentry.markfordelete = 0
)
問題は、 catentry と catentdesc を更新する必要があることですが、条件クエリが結果を返さないため、別のものを更新すると更新できません。
結果を格納してテーブルを更新することにより、プロシージャで可能です。しかし、私はもっと簡単な方法を探しています。誰か助けてください。
DB2 で一度に両方のテーブルを更新する方法はありますか?