Revision 1fe9e1c1
Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt
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
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.