DB structure changes
Posted by mholmes on 30 Oct 2014 in Activity log
Made some minor db changes at SF's request. I ported over the "Linked titles" field created for convenience in the backup db to the main db, since this seems useful; and I also re-implemented the triggers which create the own_desc lookup field in the owners table, using this (tested in dev, implemented in live, and actually run in four steps for caution's sake):
/* This file rebuilds the existing triggers for the own_desc field. */
DELIMITER $$
/* First delete the existing triggers. */
DROP TRIGGER IF EXISTS `own_desc_insert`$$
DROP TRIGGER IF EXISTS `own_desc_update`$$
/* Now recreate the contents of the own_desc field. */
UPDATE `owners` SET `own_desc` = CASE
WHEN (LENGTH(`own_surname`) > 0 AND LENGTH(`own_forenames`) > 0 AND LENGTH(`own_street_num`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_surname`,_utf8', ',`own_forenames`,_utf8' : ',`own_street_num`,_utf8', ',`own_street`)
WHEN (LENGTH(`own_surname`) > 0 AND LENGTH(`own_forenames`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_surname`,_utf8', ',`own_forenames`,_utf8' : ',`own_street`)
WHEN (LENGTH(`own_surname`) > 0 AND LENGTH(`own_forenames`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_surname`,_utf8', ',`own_forenames`,_utf8' : (no address)')
WHEN (LENGTH(`own_surname`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_surname`,_utf8' (no forenames or address)')
WHEN (LENGTH(`own_institution_name`) > 0 AND LENGTH(`own_street_num`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_institution_name`,_utf8' : ',`own_street_num`,_utf8', ',`own_street`)
WHEN (LENGTH(`own_institution_name`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_institution_name`,_utf8' : ',`own_street`)
WHEN (LENGTH(`own_institution_name`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',`own_institution_name`,_utf8' : (no address)')
WHEN (LENGTH(`own_street_num`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',_utf8' : (no name): ',`own_street_num`,_utf8', ',`own_street`)
WHEN (LENGTH(`own_street_num`) > 0 AND LENGTH(`own_street`) > 0) THEN
concat(`own_owner_id`,_utf8'. ',_utf8' : (no name or street number): ',`own_street`)
ELSE
concat(`own_owner_id`,_utf8'. ',_utf8'(no name or address)')
END; $$
/* Now recreate the triggers. */
CREATE TRIGGER `own_desc_insert` BEFORE INSERT ON `owners`
FOR EACH ROW BEGIN
SET NEW.`own_desc` = CASE
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0 AND LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : (no address)')
WHEN (LENGTH(NEW.`own_surname`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8' (no forenames or address)')
WHEN (LENGTH(NEW.`own_institution_name`) > 0 AND LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_institution_name`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_institution_name`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : (no address)')
WHEN (LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',_utf8' : (no name): ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',_utf8' : (no name or street number): ',NEW.`own_street`)
ELSE
concat(NEW.`own_owner_id`,_utf8'. ',_utf8'(no name or address)')
END;
END; $$
CREATE TRIGGER `own_desc_update` BEFORE UPDATE ON `owners`
FOR EACH ROW BEGIN
SET NEW.`own_desc` = CASE
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0 AND LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_surname`) > 0 AND LENGTH(NEW.`own_forenames`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8', ',NEW.`own_forenames`,_utf8' : (no address)')
WHEN (LENGTH(NEW.`own_surname`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_surname`,_utf8' (no forenames or address)')
WHEN (LENGTH(NEW.`own_institution_name`) > 0 AND LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_institution_name`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_institution_name`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',NEW.`own_institution_name`,_utf8' : (no address)')
WHEN (LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',_utf8' : (no name): ',NEW.`own_street_num`,_utf8', ',NEW.`own_street`)
WHEN (LENGTH(NEW.`own_street_num`) > 0 AND LENGTH(NEW.`own_street`) > 0) THEN
concat(NEW.`own_owner_id`,_utf8'. ',_utf8' : (no name or street number): ',NEW.`own_street`)
ELSE
concat(NEW.`own_owner_id`,_utf8'. ',_utf8'(no name or address)')
END;
END; $$
DELIMITER ;