优化
This commit is contained in:
@@ -175,3 +175,39 @@ CREATE TABLE IF NOT EXISTS fl_container_transport_history (
|
||||
UNIQUE KEY uk_container_transport_history_operation (container_booking_id,operator_id,operation_id),
|
||||
KEY idx_container_transport_history (container_booking_id,created_at,id)
|
||||
) ENGINE=InnoDB COMMENT='柜次真实运输字段不可变变更审计';
|
||||
|
||||
DROP PROCEDURE IF EXISTS ensure_container_transport_history_schema;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE ensure_container_transport_history_schema()
|
||||
BEGIN
|
||||
IF (NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND column_name='operation_id')
|
||||
OR NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND column_name='request_hash'))
|
||||
AND EXISTS (SELECT 1 FROM fl_container_transport_history LIMIT 1) THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='运输历史升级失败:旧表已有数据且缺少幂等字段';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND column_name='operation_id') THEN
|
||||
ALTER TABLE fl_container_transport_history
|
||||
ADD COLUMN operation_id VARCHAR(64) NOT NULL COMMENT '运输字段操作幂等ID' AFTER after_voyage_no;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND column_name='request_hash') THEN
|
||||
ALTER TABLE fl_container_transport_history
|
||||
ADD COLUMN request_hash CHAR(64) NOT NULL COMMENT '运输字段请求哈希' AFTER operation_id;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND index_name='uk_container_transport_history_operation') THEN
|
||||
ALTER TABLE fl_container_transport_history
|
||||
ADD UNIQUE KEY uk_container_transport_history_operation (container_booking_id,operator_id,operation_id);
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE()
|
||||
AND table_name='fl_container_transport_history' AND index_name='idx_container_transport_history') THEN
|
||||
ALTER TABLE fl_container_transport_history
|
||||
ADD KEY idx_container_transport_history (container_booking_id,created_at,id);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL ensure_container_transport_history_schema();
|
||||
DROP PROCEDURE ensure_container_transport_history_schema;
|
||||
|
||||
Reference in New Issue
Block a user