Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / sql / Pg-upgrade2 / record_links_dunning_post_delete_trigger.sql
1 -- @tag: record_links_dunning_post_delete_trigger
2 -- @description: Verknüpfte Belege für Mahnungen beim Löschen entfernen
3 -- @depends: release_3_5_6_1
4
5 -- clean up old dangling links
6 DELETE FROM record_links WHERE from_table = 'dunning' AND NOT EXISTS (SELECT id FROM dunning WHERE id = from_id);
7 DELETE FROM record_links WHERE to_table   = 'dunning' AND NOT EXISTS (SELECT id FROM dunning WHERE id = to_id);
8
9 -- install a trigger to delete links on delete
10 CREATE OR REPLACE FUNCTION clean_up_record_links_before_dunning_delete() RETURNS trigger AS $$
11   BEGIN
12     DELETE FROM record_links
13       WHERE (from_table = 'dunning' AND from_id = OLD.id)
14          OR (to_table   = 'dunning' AND to_id   = OLD.id);
15     RETURN OLD;
16   END;
17 $$ LANGUAGE plpgsql;
18
19 CREATE TRIGGER before_delete_dunning_trigger
20 BEFORE DELETE ON dunning FOR EACH ROW EXECUTE
21 PROCEDURE clean_up_record_links_before_dunning_delete();