我有这种表的结构,让我们打电话 person
id | name | table_name |oid
----+-------+-------------+---
1 | James | customer | 5
2 | Smith | employe | 6
所以,我要的是创建一个SQL脚本,让我删除的行id = 5
中customer
删除第一行中的表前person
表。
这是我第一次遇到这种情况,所以我不知道该怎么做。我已经在Google上进行了几次搜索,但没有得到适当的答案,有人可以帮我吗?
使用游标进行循环以遍历表并运行动态删除。然后,您可以删除您的人员表。
DO $$
DECLARE
v_rec RECORD;
BEGIN
for v_rec IN ( select table_name, oid from person )
LOOP
EXECUTE format('DELETE FROM '||v_rec.table_name ||' WHERE id = $1' ) USING v_rec.oid;
END LOOP;
END;
$$ LANGUAGE plpgsql;
我建议您尽可能更改此设计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句