Revision 1fe9e1c1
Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt
sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql | ||
---|---|---|
-- @tag: requirement_spec_parts_foreign_key_cascade
|
||
-- @description: Automatisches Löschen in requirement_spec_parts wenn zugehöriges Pflichtenheft gelöscht wird
|
||
-- @depends: requirement_spec_parts
|
||
ALTER TABLE requirement_spec_parts
|
||
DROP CONSTRAINT requirement_spec_parts_requirement_spec_id_fkey;
|
||
|
||
ALTER TABLE requirement_spec_parts
|
||
ADD FOREIGN KEY (requirement_spec_id) REFERENCES requirement_specs (id)
|
||
ON DELETE CASCADE;
|
Auch abrufbar als: Unified diff
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.