-- 二期第三方单条箱规 + 单张图片绑定增量;可重复执行。 USE baiyue_firstleg; DROP PROCEDURE IF EXISTS phase2_add_measurement_column; DELIMITER $$ CREATE PROCEDURE phase2_add_measurement_column( IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_definition TEXT) BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table AND COLUMN_NAME = p_column ) THEN SET @ddl = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN `', p_column, '` ', p_definition); PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement; END IF; END$$ DELIMITER ; CALL phase2_add_measurement_column( 'fl_inbound_measurement', 'external_request_hash', 'CHAR(64) NULL COMMENT ''第三方data原文和图片内容联合请求哈希'' AFTER external_event_no'); CALL phase2_add_measurement_column( 'fl_inbound_measurement_item', 'inbound_detail_id', 'BIGINT UNSIGNED NULL COMMENT ''绑定的订单货物明细ID,平台手工明细可为空'' AFTER measurement_id'); CALL phase2_add_measurement_column( 'fl_inbound_measurement_item', 'external_detail_no', 'VARCHAR(128) NULL COMMENT ''第三方测量明细唯一号,平台手工明细可为空'' AFTER inbound_detail_id'); DROP PROCEDURE IF EXISTS phase2_add_measurement_column; SET @has_index = ( SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'fl_inbound_measurement_item' AND INDEX_NAME = 'uk_measure_external_detail' ); SET @ddl = IF( @has_index = 0, 'ALTER TABLE fl_inbound_measurement_item ADD UNIQUE KEY uk_measure_external_detail (tenant_id, inbound_detail_id, external_detail_no)', 'SELECT 1' ); PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement;