【发布时间】:2022-08-12 22:09:22
【问题描述】:
有 3 个表相互关联,所以我不能只删除行。
我编写了一个声明记录的查询,遍历第一个表,然后使用 _id 获取第二个表的记录,然后是第三个表。
但是在从每个表中获取所有 id 后,我需要从第 3 个表中删除这些 id,然后是第 2 个表,然后是第 1 个表。
我无法声明并将找到的行存储到变量中。
DO $$
DECLARE
firstTableRecord record;
-- tried to declare something like
-- firstTableRecord record[]; or firstTableRecord [];
secondTableRecord record;
thirdTableRecord record;
BEGIN
-- Get FirstTable Records
FOR firstTableRecord IN
SELECT _id FROM public.\"FirstTable\"
LOOP
RAISE NOTICE \'firstTableRecord: %\', firstTableRecord;
-- Using the Ids from FirstTable get records from SecondTable
FOR secondTableRecord IN
select _id from public.\"SecondTable\" where _id = firstTableRecord._id
LOOP
RAISE NOTICE \'secondTableRecord: %\', secondTableRecord;
-- Using the Ids from SecondTable get records from ThirdTable
FOR thirdTableRecord IN
select _id from public.\"ThirdTable\" where _id = firstTableRecord._id
LOOP
RAISE NOTICE \'thirdTableRecord: %\', thirdTableRecord;
END LOOP;
END LOOP;
END LOOP;
-- remove all record found in third table
-- remove all record found in second table
-- remove all record found in first table
END$$;
我是否认为/这样做是错误的方向,即有一种更简单的方法或如何做到这一点?
提前感谢您的任何建议和意见;
-
你只是在寻找一种方法\"级联删除\"?考虑这个先前的答案:stackoverflow.com/a/25499662/2067753
标签: sql postgresql