From 1894e9fef6e392d3d69d3e4055f38f5117eec2d4 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 11 Dec 2014 16:49:34 +0100 Subject: [PATCH] Bug 11165: Automatically save the authority last modification time Content-Type: text/plain; charset=utf-8 This patch rename the column auth_header.datemodified with modification_time. Now this column will be automatically updated when a row will be updated. Test plan: 0/ Verify that la major part of your auth_header.datemodified is set to null 1/ Execute the updatedb entry 2/ Verify that the column is renamed and the values have not been changed. 3/ Update an authority and verify (using the sql cli) that this value has been updated. Signed-off-by: Marcel de Rooy In the absence of a coding guideline stipulating a preferred column name for a timestamp, this modification_time works for me. Null values are replaced by current time after db rev; other values are left alone. NOTE FOR RM: Please run update_dbix_class_files.pl. --- installer/data/mysql/kohastructure.sql | 2 +- installer/data/mysql/updatedatabase.pl | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 9504876..7054c97 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -24,7 +24,7 @@ CREATE TABLE `auth_header` ( `authid` bigint(20) unsigned NOT NULL auto_increment, `authtypecode` varchar(10) NOT NULL default '', `datecreated` date default NULL, - `datemodified` date default NULL, + `modification_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `origincode` varchar(20) default NULL, `authtrees` mediumtext, `marc` blob, diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index aa5bbbf..0d2ca44 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -9867,6 +9867,20 @@ if(CheckVersion($DBversion)) { SetVersion($DBversion); } +$DBversion = "3.19.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + ALTER TABLE auth_header + CHANGE COLUMN datemodified modification_time TIMESTAMP NOT NULL default CURRENT_TIMESTAMP + |); + $dbh->do(q| + ALTER TABLE auth_header + CHANGE COLUMN modification_time modification_time TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP + |); + print "Upgrade to $DBversion done (Bug 11165: Update auth_header.datemodified when updated)\n"; + SetVersion ($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) -- 1.7.7.6