'CustomObject' table_name
FROM childrenCustomObjectOids co
UNION
SELECT tdb."Oid", tdb.table_name
FROM to_delete_both AS tdb
CROSS JOIN LATERAL (
SELECT co."Oid", 'CustomObject'
FROM "CustomObject" co
WHERE tdb.table_name = 'Department' AND co."Oilfield" = tdb."Oid"
UNION ALL
SELECT d."Oid", 'Department'
FROM "Department" d
WHERE tdb.table_name = 'CustomObject' AND d."EquivalentObject" = tdb."Oid"
) AS t
)
SELECT count(*)
FROM to_delete_both;
Ошибок не возникает. Но по идее добавлять надо только те записи, которых еще нет. Как с этим быть? Соответственно, точно ли нужен UNION ALL или может быть лучше использовать UNION?
> Но по идее добавлять надо только те записи, которых еще нет Так Вы это и делаете — вон же у Вас UNION между нерекурсивной и рекурсивной частями. > Соответственно, точно ли нужен UNION ALL или может быть лучше использовать UNION? Там внутри LATERAL записи из разных частей не могут быть одинаковыми (т.е. они из разных таблиц, и у них table_name разные).
Обсуждают сегодня