-- 生产报工/产出/入库幂等约束:避免接口重试或并发审批生成重复单据。 -- 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;