erp-java/docs/database/V2.4__idempotency_indexes.sql

38 lines
1.8 KiB
SQL
Raw Permalink 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.

-- ============================================================
-- V2.4 幂等性支持:唯一索引
-- ============================================================
-- 订单表:平台订单号+平台+店铺 唯一,防止重复创建订单
-- 库存操作记录表SKU+仓库+关联单号 唯一,防止重复扣减/锁定/解锁
-- 物流轨迹表:(运单号, 轨迹时间, 地点) 已有去重,新增强制唯一约束
-- ============================================================
-- 1. orders 表:平台订单号+平台+店铺 唯一索引
-- 确保同一店铺同一平台订单号不会重复创建
ALTER TABLE orders
ADD CONSTRAINT uk_orders_platform_order_sn
UNIQUE (platform_order_sn, platform, shop_id);
-- 2. stocks 表:(sku_code, warehouse_id) 已有主键,验证唯一性
-- 确保每个仓库的SKU库存记录唯一
ALTER TABLE stocks
ADD CONSTRAINT uk_stocks_sku_warehouse
UNIQUE (sku_code, warehouse_id);
-- 3. stock_logs 表:(sku_code, warehouse_id, related_no, type) 唯一索引
-- 防止同一操作重复记录(如重复扣减、重复解锁)
-- 注意:如果 stock_logs 表没有这些字段,请根据实际表结构调整
-- 以下为假设字段名,请根据实际情况修改
-- ALTER TABLE stock_logs
-- ADD CONSTRAINT uk_stock_logs_operation
-- UNIQUE (sku_code, warehouse_id, related_no, operation_type);
-- 4. waybill_status 表:(waybill_no) 已有唯一索引,验证是否存在
-- 确保运单号唯一
-- ALTER TABLE waybill_status ADD UNIQUE (waybill_no);
-- 5. logistics_trace 表:(waybill_no, trace_time, location) 唯一索引
-- 确保同一运单同一时间同一地点的轨迹不重复
ALTER TABLE logistics_trace
ADD CONSTRAINT uk_logistics_trace_waybill_time_location
UNIQUE (waybill_no, trace_time, location);