Merge remote branch 'galen/bug5308' into bug_5308

This commit is contained in:
Chris Cormack 2010-11-02 08:52:43 +13:00
commit 4e11a5ade3
2 changed files with 35 additions and 3 deletions

View File

@ -1791,10 +1791,15 @@ CREATE TABLE `subscriptionhistory` (
DROP TABLE IF EXISTS `subscriptionroutinglist`;
CREATE TABLE `subscriptionroutinglist` (
`routingid` int(11) NOT NULL auto_increment,
`borrowernumber` int(11) default NULL,
`borrowernumber` int(11) NOT NULL,
`ranking` int(11) default NULL,
`subscriptionid` int(11) default NULL,
PRIMARY KEY (`routingid`)
`subscriptionid` int(11) NOT NULL,
PRIMARY KEY (`routingid`),
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;
--

View File

@ -3799,6 +3799,33 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
SetVersion ($DBversion);
}
$DBversion = "3.01.00.XXX";
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
$dbh->do("DELETE FROM subscriptionroutinglist WHERE borrowernumber IS NULL;");
$dbh->do("ALTER TABLE subscriptionroutinglist MODIFY COLUMN `borrowernumber` int(11) NOT NULL;");
$dbh->do("DELETE FROM subscriptionroutinglist WHERE subscriptionid IS NULL;");
$dbh->do("ALTER TABLE subscriptionroutinglist MODIFY COLUMN `subscriptionid` int(11) NOT NULL;");
$dbh->do("CREATE TEMPORARY TABLE del_subscriptionroutinglist
SELECT s1.routingid FROM subscriptionroutinglist s1
WHERE EXISTS (SELECT * FROM subscriptionroutinglist s2
WHERE s2.borrowernumber = s1.borrowernumber
AND s2.subscriptionid = s1.subscriptionid
AND s2.routingid < s1.routingid);");
$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);
}
=item DropAllForeignKeys($table)
Drop all foreign keys of the table $table