Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 07c31856

Von Bernd Bleßmann vor fast 4 Jahren hinzugefügt

  • ID 07c31856a83b520e82d21a40a749f3a1a7c6df6d
  • Vorgänger a031b820
  • Nachfolger b4c84c7e

Mahnungen: DB-Trigger zum Löschen von Verknüpfungen beim Löschen einer Mahnung

Unterschiede anzeigen:

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();

Auch abrufbar als: Unified diff