-- ============================================================ -- 功能:仓库表新增"库存锁定模式"字段(OMS下单冻结库存/防超卖功能开关) -- 数据库:达梦(DM8),兼容 Oracle 语法,表名/字段名统一大写 -- 模式:NGWL_TEST_SYSTEM(mhd-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; -- ----------------------------