use Modern::Perl; return { bug_number => "21983", description => "Deleted biblio handling on ILL", up => sub { my ($args) = @_; my ($dbh, $out) = @$args{qw(dbh out)}; unless ( column_exists( 'illrequests', 'deleted_biblio_id' ) ) { $dbh->do(q{ ALTER TABLE illrequests ADD COLUMN `deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request' AFTER `biblio_id`; }); say $out "Added column 'illrequests.deleted_biblio_id'"; } # Move deleted biblio_id to deleted_biblio_id before setting the FK $dbh->do(q{ UPDATE illrequests LEFT JOIN biblio ON illrequests.biblio_id=biblio.biblionumber SET illrequests.biblio_id=NULL, illrequests.deleted_biblio_id=illrequests.biblio_id WHERE biblio.biblionumber IS NULL AND illrequests.biblio_id IS NOT NULL }); unless ( foreign_key_exists( 'illrequests', 'illrequests_bibfk' ) ) { $dbh->do(q{ ALTER TABLE illrequests ADD KEY `illrequests_bibfk` (`biblio_id`), ADD FOREIGN KEY illrequests_bibfk (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE CASCADE; }); say $out "Added foreign key constraint 'illrequests.illrequests_bibfk'"; } }, };