-- ============================================================
-- 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);
