Files
nanguangszwlback/sql/20260912_alter_table_dm_warehouse_stock_lock_mode.sql
T
rcx b1d92fdda8 feat(oms,wms,system): OMS下单冻结库存(防超卖)——仓库级库存锁定模式
- 仓库新增stock_lock_mode开关(1-下单冻结 2-分配库存冻结默认),查询/独立切换接口+在途冻结单切换守卫
- WMS新增out_order_freeze_record冻结记录表:下单冻结/编辑原子重锁/取消解冻/分配承接/交接扣减/反审还原全状态机,条件更新防并发超卖
- OMS下单即冻结(失败阻断+落库失败补偿解冻)、已下发禁编辑、cancelIssueOrder补调WMS清理(修存量不同步)、cancelAuditState镜像还原修复
- 达梦SQL脚本3个(WAREHOUSE加列/冻结记录建表/主键列名修复),测试库已执行并全流程实测通过
2026-09-14 15:41:32 +08:00

34 lines
1.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 功能:仓库表新增"库存锁定模式"字段(OMS下单冻结库存/防超卖功能开关)
-- 数据库:达梦(DM8),兼容 Oracle 语法,表名/字段名统一大写
-- 模式:NGWL_TEST_SYSTEMmhd-system 服务对应业务库;生产环境按实际模式名替换)
-- 表名:WAREHOUSE
-- 日期:2026-09-12
-- 说明:
-- 1-下单冻结:OMS出库业务单「下单」即冻结WMS库存(可用-、冻结+,库存数量不变)
-- 2-分配库存冻结:现有模式,WMS「分配库存」时才冻结(默认值,存量仓库行为零变化)
-- 不变式:库存数量 = 可用数量 + 冻结数量(出库交接前全程成立)
-- NULL 视为 2(代码侧 isOrderFreezeWarehouse 仅 =1 才走下单冻结,兜底降级安全)
-- ============================================================
-- 0. 执行前检查(确认列是否已存在,已存在则跳过本脚本)
-- SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE
-- FROM ALL_TAB_COLUMNS
-- WHERE OWNER = 'NGWL_TEST_SYSTEM'
-- AND TABLE_NAME = 'WAREHOUSE'
-- AND COLUMN_NAME = 'STOCK_LOCK_MODE';
-- 1. 添加字段(达梦 ADD COLUMN 不支持 AFTER,列追加在表尾;带 DEFAULT 时存量行自动填默认值)
ALTER TABLE NGWL_TEST_SYSTEM.WAREHOUSE ADD STOCK_LOCK_MODE TINYINT DEFAULT 2;
-- 2. 添加注释(达梦必须单独写)
COMMENT ON COLUMN NGWL_TEST_SYSTEM.WAREHOUSE.STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结';
-- 3. 验证
-- SELECT WAREHOUSE_ID, WAREHOUSE_CODE, STOCK_LOCK_MODE FROM NGWL_TEST_SYSTEM.WAREHOUSE WHERE ROWNUM <= 10;
-- ----------------------------
-- 回滚脚本(按需,须确认无 status∈(1,2) 的在途冻结单后再执行)
-- ALTER TABLE NGWL_TEST_SYSTEM.WAREHOUSE DROP COLUMN STOCK_LOCK_MODE;
-- ----------------------------