From: Moritz Bunkus Date: Mon, 24 Aug 2015 15:45:35 +0000 (+0200) Subject: Pflichtenheftartikel mit Pflichtenheft automatisch löschen X-Git-Tag: release-3.4.1~756 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=1fe9e1c1adaa24f262e3d973eb0a9520faeeba81;p=kivitendo-erp.git 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. --- diff --git a/sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql b/sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql new file mode 100644 index 000000000..c4c22bdf2 --- /dev/null +++ b/sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql @@ -0,0 +1,9 @@ +-- @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;