From 1fe9e1c1adaa24f262e3d973eb0a9520faeeba81 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 24 Aug 2015 17:45:35 +0200 Subject: [PATCH] =?utf8?q?Pflichtenheftartikel=20mit=20Pflichtenheft=20aut?= =?utf8?q?omatisch=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. --- .../requirement_spec_parts_foreign_key_cascade.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sql/Pg-upgrade2/requirement_spec_parts_foreign_key_cascade.sql 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; -- 2.20.1