DB-Upgrade: kein »DROP CONSTRAINT …« nutzen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 28 Aug 2017 07:35:33 +0000 (09:35 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 28 Aug 2017 08:21:44 +0000 (10:21 +0200)
Die Namen von Constraints wurden früher mit $1, $2
etc. durchnummeriert. Inzwischen werden sie hingegen aus Tabellen- und
Spaltennamen benannt.

Daher ist ein »DROP CONSTRAINT…« mit Namen nicht portabel. Statt
dessen müssen leider alle vorhandenen Constraints gedropt und neu
angelegt werden.

sql/Pg-upgrade2/prices_delete_cascade.pl [new file with mode: 0644]
sql/Pg-upgrade2/prices_delete_cascade.sql [deleted file]

diff --git a/sql/Pg-upgrade2/prices_delete_cascade.pl b/sql/Pg-upgrade2/prices_delete_cascade.pl
new file mode 100644 (file)
index 0000000..4180348
--- /dev/null
@@ -0,0 +1,30 @@
+# @tag: prices_delete_cascade
+# @description: Preisgruppenpreise Löschen wenn Artikel gelöscht wird
+# @depends: release_3_4_1
+
+# delete price entries if part is deleted
+
+package SL::DBUpgrade2::prices_delete_cascade;
+
+use utf8;
+use strict;
+
+use parent qw(SL::DBUpgrade2::Base);
+
+sub run {
+  my ($self) = @_;
+
+  $self->drop_constraints(table => "prices");
+
+  my $query = <<SQL;
+    ALTER TABLE prices
+    ADD CONSTRAINT prices_pricegroup_id_fkey FOREIGN KEY (pricegroup_id) REFERENCES pricegroup(id) ON DELETE CASCADE,
+    ADD CONSTRAINT prices_parts_id_fkey      FOREIGN KEY (parts_id)      REFERENCES parts(id)      ON DELETE CASCADE
+SQL
+
+  $self->db_query($query);
+
+  return 1;
+}
+
+1;
diff --git a/sql/Pg-upgrade2/prices_delete_cascade.sql b/sql/Pg-upgrade2/prices_delete_cascade.sql
deleted file mode 100644 (file)
index 74f19b1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- @tag: prices_delete_cascade
--- @description: Preisgruppenpreise Löschen wenn Artikel gelöscht wird
--- @depends: release_3_4_1
-
--- delete price entries if part is deleted
-ALTER TABLE prices DROP constraint "$1", ADD FOREIGN KEY (pricegroup_id) REFERENCES pricegroup(id) ON DELETE CASCADE;
-ALTER TABLE prices DROP constraint "$2", ADD FOREIGN KEY (parts_id)      REFERENCES parts(id)      ON DELETE CASCADE;