-- 单箱当前测量记录增量;可重复执行。 USE baiyue_firstleg; DROP PROCEDURE IF EXISTS phase2_add_carton_measurement_column; DELIMITER $$ CREATE PROCEDURE phase2_add_carton_measurement_column( 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 = 'fl_inbound_measurement_item' AND COLUMN_NAME = p_column ) THEN SET @ddl = CONCAT( 'ALTER TABLE fl_inbound_measurement_item ADD COLUMN `', p_column, '` ', p_definition); PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement; END IF; END$$ DELIMITER ; CALL phase2_add_carton_measurement_column( 'box_code', 'VARCHAR(128) NULL COMMENT ''柏悦唛头箱号;设备单箱测量时同一客户内唯一'' AFTER external_detail_no'); CALL phase2_add_carton_measurement_column( 'machine_no', 'VARCHAR(64) NULL COMMENT ''本次测量设备编号'' AFTER source_image_file_id'); CALL phase2_add_carton_measurement_column( 'device_measured_at', 'DATETIME(3) NULL COMMENT ''本次设备测量时间'' AFTER machine_no'); CALL phase2_add_carton_measurement_column( 'updated_at', 'DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT ''最后更新时间'' AFTER created_at'); DROP PROCEDURE IF EXISTS phase2_add_carton_measurement_column; SET @has_box_code_index = ( SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'fl_inbound_measurement_item' AND INDEX_NAME = 'uk_measure_box_code' ); SET @ddl = IF( @has_box_code_index = 0, 'ALTER TABLE fl_inbound_measurement_item ADD UNIQUE KEY uk_measure_box_code (tenant_id, box_code)', 'SELECT 1' ); PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement;