Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1fe9e1c1

Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt

  • ID 1fe9e1c1adaa24f262e3d973eb0a9520faeeba81
  • Vorgänger 1229a006
  • Nachfolger 40041962

Pflichtenheftartikel mit Pflichtenheft automatisch löschen

Wenn ein Pflichtenheft gelöscht wird, so müssen seine Bestandteile ( =
Einträge in anderen 1:n-Tabellen) mit gelöscht werden. Hier betraf es
die »Zusätzlichen Artikel«, Tabelle requirement_spec_parts. Die anderen
abhängigen Tabellen nutzen bereits FOREIGN KEY … ON DELETE CASCADE, also
das auch für requirement_spec_parts nutzen.

Ansonsten klappt das Löschen schlicht nicht. Entsprechende
Fehlermeldungen:

2015-08-24 17:27:48.632 9734 [26783] : DBD::Pg::st execute failed:
ERROR: update or delete on table "requirement_specs" violates foreign
key constraint "requirement_spec_parts_requirement_spec_id_fkey" on
table "requirement_spec_parts"

DETAIL: Key (id)=(4) is still referenced from table
"requirement_spec_parts". at
/usr/share/perl5/vendor_perl/Rose/DB/Object.pm line 1576.

Unterschiede anzeigen:

sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql
1
-- @tag: requirement_spec_parts_foreign_key_cascade
2
-- @description: Automatisches Löschen in requirement_spec_parts wenn zugehöriges Pflichtenheft gelöscht wird
3
-- @depends: requirement_spec_parts
4
ALTER TABLE requirement_spec_parts
5
DROP CONSTRAINT requirement_spec_parts_requirement_spec_id_fkey;
6

  
7
ALTER TABLE requirement_spec_parts
8
ADD FOREIGN KEY (requirement_spec_id) REFERENCES requirement_specs (id)
9
ON DELETE CASCADE;

Auch abrufbar als: Unified diff