From e86bfb626bcd4b32d7db7c72ad7fd799414217ac Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 22 Jul 2021 10:37:26 +0100 Subject: [PATCH] Bug 22690: (QA follow-up) Add relationships to linktracker Signed-off-by: Martin Renvoize --- .../data/mysql/atomicupdate/bug_22690.perl | 21 +++++++++++++++++++ installer/data/mysql/kohastructure.sql | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 installer/data/mysql/atomicupdate/bug_22690.perl diff --git a/installer/data/mysql/atomicupdate/bug_22690.perl b/installer/data/mysql/atomicupdate/bug_22690.perl new file mode 100644 index 0000000000..754372fc86 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_22690.perl @@ -0,0 +1,21 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + + unless( foreign_key_exists( 'linktracker', 'linktracker_biblio_ibfk' ) ) { + $dbh->do(q{ UPDATE linktracker SET biblionumber = NULL WHERE biblionumber NOT IN (SELECT biblionumber FROM biblio) }); + $dbh->do(q{ ALTER TABLE linktracker ADD CONSTRAINT `linktracker_biblio_ibfk` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE SET NULL }); + } + + unless( foreign_key_exists( 'linktracker', 'linktracker_item_ibfk' ) ) { + $dbh->do(q{ UPDATE linktracker SET itemnumber = NULL WHERE itemnumber NOT IN (SELECT itemnumber FROM items) }); + $dbh->do(q{ ALTER TABLE linktracker ADD CONSTRAINT `linktracker_item_ibfk` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE SET NULL }); + } + + unless( foreign_key_exists( 'linktracker', 'linktracker_borrower_ibfk' ) ) { + $dbh->do(q{ UPDATE linktracker SET borrowernumber = NULL WHERE borrowernumber NOT IN (SELECT borrowernumber FROM borrowers) }); + $dbh->do(q{ ALTER TABLE linktracker ADD CONSTRAINT `linktracker_borrower_ibfk` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL }); + } + + # Always end with this (adjust the bug info) + NewVersion( $DBversion, 22690, "Add constraints to linktracker table"); +} diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 0ff6005d93..c3b992e587 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -3339,7 +3339,10 @@ CREATE TABLE `linktracker` ( KEY `bibidx` (`biblionumber`), KEY `itemidx` (`itemnumber`), KEY `borridx` (`borrowernumber`), - KEY `dateidx` (`timeclicked`) + KEY `dateidx` (`timeclicked`), + CONSTRAINT `linktracker_biblio_ibfk` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE SET NULL, + CONSTRAINT `linktracker_item_ibfk` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE SET NULL, + CONSTRAINT `linktracker_borrower_ibfk` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- 2.20.1