从Postgres中的动态表名称中删除

莱索

我有这种表的结构,让我们打电话 person

id  | name  | table_name  |oid
----+-------+-------------+---
 1  | James | customer    | 5
 2  | Smith | employe     | 6

所以,我要的是创建一个SQL脚本,让我删除的行id = 5customer删除第一行中的表前person表。

这是我第一次遇到这种情况,所以我不知道该怎么做。我已经在Google上进行了几次搜索,但没有得到适当的答案,有人可以帮我吗?

Kaushik nayak

使用游标进行循环以遍历表并运行动态删除。然后,您可以删除您的人员表。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章