-- 生产报工/产出/入库幂等约束:避免接口重试或并发审批生成重复单据。
|
-- MySQL 唯一索引允许多条 NULL,因此不影响没有 feedback_id 的历史数据。
|
|
SET @has_feedback_unique := (
|
SELECT COUNT(*) FROM information_schema.statistics
|
WHERE table_schema = DATABASE()
|
AND table_name = 'mes_wm_product_produce'
|
AND index_name = 'uk_product_produce_feedback'
|
);
|
SET @feedback_sql := IF(
|
@has_feedback_unique = 0,
|
'ALTER TABLE `mes_wm_product_produce` ADD UNIQUE KEY `uk_product_produce_feedback` (`feedback_id`)',
|
'SELECT 1'
|
);
|
PREPARE feedback_stmt FROM @feedback_sql;
|
EXECUTE feedback_stmt;
|
DEALLOCATE PREPARE feedback_stmt;
|
|
SET @has_receipt_code_unique := (
|
SELECT COUNT(*) FROM information_schema.statistics
|
WHERE table_schema = DATABASE()
|
AND table_name = 'mes_wm_product_receipt'
|
AND index_name = 'uk_product_receipt_code'
|
);
|
SET @receipt_sql := IF(
|
@has_receipt_code_unique = 0,
|
'ALTER TABLE `mes_wm_product_receipt` ADD UNIQUE KEY `uk_product_receipt_code` (`code`)',
|
'SELECT 1'
|
);
|
PREPARE receipt_stmt FROM @receipt_sql;
|
EXECUTE receipt_stmt;
|
DEALLOCATE PREPARE receipt_stmt;
|