项目场景:
提示:这里简述项目相关背景:
有时需要根据delete的结果进行更新
问题描述
提示:这里描述项目中遇到的问题:
这时with子查询就体现出了长处. 代码中使用了2个子查询只是为体现出先后顺序.
原因分析:
提示:delete成功才会执行后续的SQL,具有原子性;
解决方案:
提示:执行顺序为t1->t2->table3
WITH t1 AS (
DELETE FROM table1
WHERE
id = '12123' RETURNING id
),
t2 AS (
UPDATE table2
SET modify_tm = now( )
FROM
t1
WHERE
table2.id = t1.id
)
UPDATE table3
SET modify_tm = now( )
FROM
t1
WHERE
table3.id = t1.id