feat: persist MES delivery point and urgency metadata
This commit is contained in:
49
sql/20260908_order_management_fields.sql
Normal file
49
sql/20260908_order_management_fields.sql
Normal file
@@ -0,0 +1,49 @@
|
||||
-- WMS / INTERFACE 共用数据库;先执行此脚本,再发布两个应用。
|
||||
-- 幂等执行。归档存储过程使用 INSERT ... SELECT *,新增列必须在两表相同位置且类型一致。
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
IF OBJECT_ID(N'dbo.out_stockout', N'U') IS NULL
|
||||
OR OBJECT_ID(N'dbo.out_stockout_finish', N'U') IS NULL
|
||||
THROW 51000, N'缺少出库业务表或历史表,请核对目标数据库', 1;
|
||||
|
||||
IF COL_LENGTH(N'dbo.out_stockout', N'is_expedited') IS NULL
|
||||
ALTER TABLE dbo.out_stockout ADD is_expedited int NULL;
|
||||
IF COL_LENGTH(N'dbo.out_stockout_finish', N'is_expedited') IS NULL
|
||||
ALTER TABLE dbo.out_stockout_finish ADD is_expedited int NULL;
|
||||
|
||||
IF COL_LENGTH(N'dbo.out_stockout', N'delivery_point') IS NULL
|
||||
ALTER TABLE dbo.out_stockout ADD delivery_point nvarchar(100) NULL;
|
||||
IF COL_LENGTH(N'dbo.out_stockout_finish', N'delivery_point') IS NULL
|
||||
ALTER TABLE dbo.out_stockout_finish ADD delivery_point nvarchar(100) NULL;
|
||||
|
||||
-- 不移动/重建现有列;只验证本次字段的归档位置及总列数,不改动旧字段映射。
|
||||
IF (SELECT COUNT(*) FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.out_stockout'))
|
||||
<> (SELECT COUNT(*) FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.out_stockout_finish'))
|
||||
THROW 51001, N'业务表与历史表列数不同,已回滚;请核对归档映射', 1;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY column_id) AS ordinal, name,
|
||||
system_type_id, max_length, precision, scale
|
||||
FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.out_stockout')
|
||||
) a
|
||||
FULL JOIN (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY column_id) AS ordinal, name,
|
||||
system_type_id, max_length, precision, scale
|
||||
FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.out_stockout_finish')
|
||||
) h ON a.ordinal = h.ordinal
|
||||
WHERE (a.name IN (N'is_expedited', N'delivery_point') OR h.name IN (N'is_expedited', N'delivery_point'))
|
||||
AND (a.name IS NULL OR h.name IS NULL OR a.name <> h.name
|
||||
OR a.system_type_id <> h.system_type_id OR a.max_length <> h.max_length
|
||||
OR a.precision <> h.precision OR a.scale <> h.scale)
|
||||
)
|
||||
THROW 51001, N'新增字段在业务表与历史表中的位置或类型不同,已回滚;请核对归档映射', 1;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
Reference in New Issue
Block a user