Bug 30451: Update FK constraint on aqorders.subscriptionid
This updates the FK constrant from ON DELETE CASCADE to ON DELETE SET NULL. This means that if a subscription linked to an order is deleted, we no longer will also delete the order, but we will just set subscrptinid in the order to NULL. This will avoid data loss that can cause the budgets/funds not to add up anymore with the real espenses of the library. To test: Preparation: * Create 2 subscriptions on different records * Create a new basket * Use the "order from subscription" functionality to create order lines for both of your subscriptions * Close basket Without patch: * Delete the first subscription * Verify the order line for this subscription is gone from your basket Apply patch: * Run database update and restart_all * Delete the second subscription * Verify the order line now remained in the basket Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu> JD amended patch: perl tidy Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> (cherry picked from commit765d3d85b5
) Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com> (cherry picked from commit43c55cad8a
) Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
This commit is contained in:
parent
bbec4a2513
commit
bea91f15ef
2 changed files with 23 additions and 1 deletions
|
@ -0,0 +1,22 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "30451",
|
||||
description => "Update FK constraint on aqorders.subscriptionid to ON DELETE SET NULL",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
|
||||
if ( foreign_key_exists( 'aqorders', 'aqorders_subscriptionid' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE aqorders
|
||||
DROP FOREIGN KEY aqorders_subscriptionid
|
||||
});
|
||||
}
|
||||
$dbh->do(q{
|
||||
ALTER TABLE aqorders
|
||||
ADD CONSTRAINT `aqorders_subscriptionid` FOREIGN KEY (`subscriptionid`) REFERENCES subscription(`subscriptionid`) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
});
|
||||
say $out "Update FK constraint on subscriptionid";
|
||||
},
|
||||
};
|
|
@ -707,7 +707,7 @@ CREATE TABLE `aqorders` (
|
|||
CONSTRAINT `aqorders_ibfk_1` FOREIGN KEY (`basketno`) REFERENCES `aqbasket` (`basketno`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `aqorders_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT `aqorders_ibfk_3` FOREIGN KEY (`invoiceid`) REFERENCES `aqinvoices` (`invoiceid`) ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT `aqorders_subscriptionid` FOREIGN KEY (`subscriptionid`) REFERENCES `subscription` (`subscriptionid`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
CONSTRAINT `aqorders_subscriptionid` FOREIGN KEY (`subscriptionid`) REFERENCES `subscription` (`subscriptionid`) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
|
|
Loading…
Reference in a new issue