-- 一袋双码:code 保持原追溯码,business_code 为内部扫码出入库的独立码值。 -- 先执行本脚本,再部署后端;历史数据通过后台勾选补生成,禁止直接复制追溯码。 SET @bag_business_column_exists = ( SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_pro_bag_code' AND column_name = 'business_code' ); SET @bag_business_ddl = IF(@bag_business_column_exists = 0, 'ALTER TABLE mes_pro_bag_code ADD COLUMN business_code VARCHAR(16) DEFAULT NULL COMMENT ''内部出入库业务码(16位数字)'' AFTER code', 'SELECT 1'); PREPARE bag_business_stmt FROM @bag_business_ddl; EXECUTE bag_business_stmt; DEALLOCATE PREPARE bag_business_stmt; SET @bag_business_index_exists = ( SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = 'mes_pro_bag_code' AND index_name = 'uk_business_code' ); SET @bag_business_ddl = IF(@bag_business_index_exists = 0, 'ALTER TABLE mes_pro_bag_code ADD UNIQUE KEY uk_business_code (business_code)', 'SELECT 1'); PREPARE bag_business_stmt FROM @bag_business_ddl; EXECUTE bag_business_stmt; DEALLOCATE PREPARE bag_business_stmt;