从 postgres 中的动态 table 名称中删除

Delete from a dynamic table name in postgres

我有table这个结构,我们调用person

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

所以我想要创建一个 SQL 脚本,允许我在删除 customer table 中的 id = 5 行之前删除第一行person table.

第一次遇到这种情况,不知道该怎么办。我在 Google 上进行了几次搜索,但没有得到任何合适的答案,有人可以帮助我吗?

使用游标for循环遍历你的table和运行动态删除。然后你可以删除你的人 table.

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 = ' )  USING v_rec.oid;
END LOOP;
END;
$$ LANGUAGE plpgsql;

如果可能,我建议您更改此设计。