From e603559c5b8fa9d6c5d05adeac0059863afedd15 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 8 Oct 2015 09:15:57 +0100 Subject: [PATCH] Bug 14978: Add unique key constraint on issues.itemnumber The constraint might have existed before bug 14069. For these DB, this patch will restore it, for others, it will add it :) Test plan: > show create table issues; should not return "unique key itemnumber" Execute the updatedb entry twice > show create table issues; should return only one "unique key itemnumber" --- installer/data/mysql/kohastructure.sql | 1 + installer/data/mysql/updatedatabase.pl | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 6e75167..699ad82 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1144,6 +1144,7 @@ CREATE TABLE `issues` ( -- information related to check outs or issues `issuedate` datetime default NULL, -- date the item was checked out or issued `onsite_checkout` int(1) NOT NULL default 0, -- in house use flag PRIMARY KEY (`issue_id`), + UNIQUE KEY `itemnumber` (`itemnumber`), KEY `issuesborridx` (`borrowernumber`), KEY `itemnumber_idx` (`itemnumber`), KEY `branchcode_idx` (`branchcode`), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index e6d4f9a..4d49428 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -11054,6 +11054,16 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = 'XXX'; +if ( CheckVersion($DBversion) ) { + my $create_table_issues = @{ $dbh->selectall_arrayref(q|SHOW CREATE TABLE issues|) }[0]->[1]; + if ($create_table_issues !~ m|UNIQUE KEY.*itemnumber| ) { + $dbh->do(q|ALTER TABLE issues ADD CONSTRAINT UNIQUE KEY (itemnumber)|); + } + print "Update to $DBversion done (Bug 14978: Make sure issues.itemnumber is a unique key)\n"; + SetVersion($DBversion); +} + # DEVELOPER PROCESS, search for anything to execute in the db_update directory # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. -- 2.1.0