36 lines
1.9 KiB
SQL
36 lines
1.9 KiB
SQL
-- 允许跳过先到托盘,但需填写原因并保存当时的推荐快照。
|
|
-- 在20261008日期、收货补丁之后执行;先停写、备份、恢复演练。
|
|
-- 单次增量;不修改历史事实,不为旧记录补造原因或真实收货时间。
|
|
-- DDL隐式提交,中途失败不得盲目重跑。
|
|
DELIMITER $$
|
|
CREATE PROCEDURE migrate_usage_fifo_20261008()
|
|
BEGIN
|
|
IF DATABASE() IS NULL THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Select target database first';
|
|
END IF;
|
|
IF (SELECT COUNT(*) FROM information_schema.tables
|
|
WHERE table_schema = DATABASE() AND engine = 'InnoDB'
|
|
AND table_name IN ('biz_usage_record', 'biz_pallet_event')) <> 2 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Required InnoDB usage and event tables are missing';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_schema = DATABASE() AND table_name = 'biz_pallet_inventory'
|
|
AND column_name = 'site_arrived_at') THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Apply shipment receipt migration first';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_schema = DATABASE() AND table_name IN ('biz_usage_record', 'biz_pallet_event')
|
|
AND column_name IN ('fifo_skip_reason', 'fifo_recommendation')) THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'FIFO columns already exist; do not rerun';
|
|
END IF;
|
|
ALTER TABLE biz_usage_record
|
|
ADD COLUMN fifo_skip_reason VARCHAR(500) NULL COMMENT '跳过先到托盘原因',
|
|
ADD COLUMN fifo_recommendation JSON NULL COMMENT '跳过时先到托盘身份及到货时间快照';
|
|
ALTER TABLE biz_pallet_event
|
|
ADD COLUMN fifo_skip_reason VARCHAR(500) NULL COMMENT '跳过先到托盘原因',
|
|
ADD COLUMN fifo_recommendation JSON NULL COMMENT '跳过时先到托盘身份及到货时间快照';
|
|
END$$
|
|
DELIMITER ;
|
|
CALL migrate_usage_fifo_20261008();
|
|
DROP PROCEDURE migrate_usage_fifo_20261008;
|