-- -- content_item__del/1 -- create or replace function content_item__del( delete__item_id integer ) returns int4 as $$ BEGIN -- Also child relationships must be deleted. On delete cascade -- would not help here, as related acs_object would stay. PERFORM acs_object__delete(object_id) from acs_objects where object_id in (select rel_id from cr_child_rels where child_id = delete__item_id or parent_id = delete__item_id); -- -- Delete all revisions of this item -- -- On delete cascade should work for us, but not in case of -- relationships. Therefore, we call acs_object__delete explicitly -- on the revisions. Is is also safer in general, as referential -- integrity might not have been enforced everytime. -- PERFORM acs_object__delete(revision_id) from cr_revisions where item_id = delete__item_id; -- -- Delete all children of this item via a recursive call. -- -- On delete cascade should work for us, but not in case of -- relationships. Therefore, we call acs_object__delete explicitly -- on the revisions. Is is also safer in general, as referential -- integrity might not have been enforced everytime. -- PERFORM content_item__delete(item_id) from cr_items where parent_id = delete__item_id; -- -- Finally, delete the acs_object of the item. -- PERFORM acs_object__delete(delete__item_id); return 0; END; $$ language plpgsql;