| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产 - ä¿®å¤ uk_code å¯ä¸ç´¢å¼å¯¼è´ãç¬¬äºæ¬¡è½¯å é¤åç¼ç ãæ¥é |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- |
| | | -- ç°è±¡ï¼å·¡æ£ç¹ä½ PD-001 å
被软å 䏿¬¡ï¼ä¹åæ°å»ºåç¼ç PD-001 åå 餿¶æ¥ |
| | | -- Duplicate entry 'PD-001-\x01' for key 'safety_inspection_point.uk_code' |
| | | -- æ¥å£è¿åãç³»ç»å¼å¸¸ã(500) |
| | | -- |
| | | -- åå ï¼uk_code å»ºå¨ (code, deleted) ä¸ï¼deleted æ¯ bit(1)ã |
| | | -- 软å é¤å deleted=b'1'ï¼è¥åå²ä¸å·²æä¸æ¡åç¼ç ä¸å·²è½¯å çè®°å½ï¼ |
| | | -- ç¬¬äºæ¬¡è½¯å é¤å°±ä¼æå
¥éå¤ç (code, b'1') ç»åï¼æå¯ä¸é®ã |
| | | -- |
| | | -- ä¿®å¤ï¼å»æ (code, deleted) å¯ä¸çº¦æï¼æ¹ææ®éç´¢å¼ idx_code ç¨äºæ¥è¯¢ï¼ |
| | | -- ç¼ç å¯ä¸æ§ç± Service å±ä¿è¯ï¼æ°å¢/ä¿®æ¹æ¶ selectByCode æ¥æ´»è·è®°å½å¤éï¼ |
| | | -- ä¸ yudao å
¶å®ä¸å¡è¡¨ä¸è´ï¼ä¾å¦ mes_dv_machinery 就没æ code å¯ä¸é®ï¼ã |
| | | -- |
| | | -- å¹çï¼å
å¤æç´¢å¼æ¯å¦åå¨åæä½ï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | DROP PROCEDURE IF EXISTS sp_safety_fix_code_index; |
| | | DELIMITER $$ |
| | | CREATE PROCEDURE sp_safety_fix_code_index(IN p_table VARCHAR(64)) |
| | | BEGIN |
| | | -- 1. å ææ§ç (code, deleted) å¯ä¸é® |
| | | IF EXISTS (SELECT 1 FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND index_name = 'uk_code') THEN |
| | | SET @s = CONCAT('ALTER TABLE `', p_table, '` DROP INDEX `uk_code`'); |
| | | PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st; |
| | | END IF; |
| | | -- 2. è¡¥ä¸ä¸ªæ®éç´¢å¼ï¼ä¿è¯æç¼ç æ¥è¯¢çæ§è½ |
| | | IF NOT EXISTS (SELECT 1 FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND index_name = 'idx_code') THEN |
| | | SET @s2 = CONCAT('CREATE INDEX `idx_code` ON `', p_table, '` (`code`)'); |
| | | PREPARE st2 FROM @s2; EXECUTE st2; DEALLOCATE PREPARE st2; |
| | | END IF; |
| | | END$$ |
| | | DELIMITER ; |
| | | |
| | | CALL sp_safety_fix_code_index('safety_inspection_point'); |
| | | CALL sp_safety_fix_code_index('safety_hazard'); |
| | | CALL sp_safety_fix_code_index('safety_material'); |
| | | CALL sp_safety_fix_code_index('safety_work_permit'); |
| | | CALL sp_safety_fix_code_index('safety_accident'); |
| | | |
| | | DROP PROCEDURE IF EXISTS sp_safety_fix_code_index; |
| | | |
| | | -- ---------- æ ¡éªï¼ç¡®è®¤å·²æ uk_codeï¼ä¸æ idx_code ---------- |
| | | SELECT TABLE_NAME, INDEX_NAME, NON_UNIQUE, |
| | | GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) AS cols |
| | | FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND TABLE_NAME LIKE 'safety%' |
| | | AND INDEX_NAME IN ('uk_code', 'idx_code') |
| | | GROUP BY TABLE_NAME, INDEX_NAME, NON_UNIQUE |
| | | ORDER BY TABLE_NAME; |