bug 5308: add foreign key constraints as well
authorGalen Charlton <gmcharlt@gmail.com>
Mon, 1 Nov 2010 12:23:35 +0000 (08:23 -0400)
committerGalen Charlton <gmcharlt@gmail.com>
Mon, 1 Nov 2010 12:23:35 +0000 (08:23 -0400)
Follows up on previous patch to require that routing
list entries be linked to subscriptions and patrons.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
installer/data/mysql/kohastructure.sql
installer/data/mysql/updatedatabase.pl

index 51e4c88..9148970 100644 (file)
@@ -1795,7 +1795,11 @@ CREATE TABLE `subscriptionroutinglist` (
   `ranking` int(11) default NULL,
   `subscriptionid` int(11) NOT NULL,
   PRIMARY KEY  (`routingid`),
-  UNIQUE (`subscriptionid`, `borrowernumber`)
+  UNIQUE (`subscriptionid`, `borrowernumber`),
+  CONSTRAINT `subscriptionroutinglist_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
+    ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `subscriptionroutinglist_ibfk_2` FOREIGN KEY (`subscriptionid`) REFERENCES `subscription` (`subscriptionid`)
+    ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 --
index ddf3fa5..6443c67 100755 (executable)
@@ -3814,6 +3814,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("DELETE FROM subscriptionroutinglist
               WHERE routingid IN (SELECT routingid FROM del_subscriptionroutinglist);");
     $dbh->do("ALTER TABLE subscriptionroutinglist ADD UNIQUE (subscriptionid, borrowernumber);");
+    $dbh->do("ALTER TABLE subscriptionroutinglist 
+                ADD CONSTRAINT `subscriptionroutinglist_ibfk_1` FOREIGN KEY (`borrowernumber`) 
+                REFERENCES `borrowers` (`borrowernumber`)
+                ON DELETE CASCADE ON UPDATE CASCADE");
+    $dbh->do("ALTER TABLE subscriptionroutinglist 
+                ADD CONSTRAINT `subscriptionroutinglist_ibfk_2` FOREIGN KEY (`subscriptionid`) 
+                REFERENCES `subscription` (`subscriptionid`)
+                ON DELETE CASCADE ON UPDATE CASCADE");
     print "Upgrade to $DBversion done (Make subscriptionroutinglist more strict)\n";
     SetVersion ($DBversion);
 }