-- Rename created_at -> create_time, updated_at -> update_time -- Price/billing/zone tables created for BMS. Safe to re-run. DROP PROCEDURE IF EXISTS bms_rename_col; DELIMITER $$ CREATE PROCEDURE bms_rename_col(IN tbl VARCHAR(64), IN old_col VARCHAR(64), IN new_col VARCHAR(64), IN col_def VARCHAR(255)) BEGIN IF EXISTS ( SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tbl AND COLUMN_NAME = old_col ) AND NOT EXISTS ( SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tbl AND COLUMN_NAME = new_col ) THEN SET @sql = CONCAT('ALTER TABLE `', tbl, '` CHANGE COLUMN `', old_col, '` `', new_col, '` ', col_def); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END$$ DELIMITER ; -- DATETIME NULL CALL bms_rename_col('prc_price_set', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_price_set', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_price_set_detail', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_price_set_detail', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_customer_price_set', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_customer_price_set', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_surcharge', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_surcharge', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_surcharge_rel', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_surcharge_rel', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_quote', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_quote', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_quote_fee', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_bill', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_bill', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_bill_fee', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zone_scheme', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zone_scheme', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zone_division', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zone_division', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zonecountry', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('xtd_zonecountry', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_weight_section_template', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_weight_section_template', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_weight_section_detail', 'created_at', 'create_time', 'DATETIME DEFAULT NULL'); CALL bms_rename_col('prc_weight_section_detail', 'updated_at', 'update_time', 'DATETIME DEFAULT NULL'); -- product tables keep timestamp defaults CALL bms_rename_col('bms_product', 'created_at', 'create_time', 'datetime NOT NULL DEFAULT CURRENT_TIMESTAMP'); CALL bms_rename_col('bms_product', 'updated_at', 'update_time', 'datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'); CALL bms_rename_col('bms_product_country', 'created_at', 'create_time', 'datetime NOT NULL DEFAULT CURRENT_TIMESTAMP'); CALL bms_rename_col('bms_product_country', 'updated_at', 'update_time', 'datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'); DROP PROCEDURE IF EXISTS bms_rename_col;