Files
wvp-platform/数据库/aiot/迁移-添加camera_code字段.sql
2026-02-13 10:47:59 +08:00

51 lines
1.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 迁移-添加camera_code字段.sql
-- 功能:为 wvp_stream_proxy 表添加 camera_code 字段作为全局唯一标识
-- 1. 新增 camera_code 列允许NULL稍后填充数据
ALTER TABLE wvp_stream_proxy
ADD COLUMN camera_code VARCHAR(64) NULL COMMENT '摄像头全局唯一编码格式cam_xxxxxxxxxxxx';
-- 2. 为现有数据生成 camera_code基于 ID 生成12位哈希
UPDATE wvp_stream_proxy
SET camera_code = CONCAT('cam_', SUBSTRING(MD5(CAST(id AS CHAR)), 1, 12))
WHERE camera_code IS NULL OR camera_code = '';
-- 3. 将 camera_code 设为 NOT NULL 并添加唯一索引
ALTER TABLE wvp_stream_proxy
MODIFY COLUMN camera_code VARCHAR(64) NOT NULL,
ADD UNIQUE KEY uk_camera_code (camera_code);
-- 4. 验证数据完整性
SELECT '检查重复的 camera_code' AS check_name, COUNT(*) AS issue_count
FROM (
SELECT camera_code, COUNT(*) AS cnt
FROM wvp_stream_proxy
GROUP BY camera_code
HAVING cnt > 1
) AS duplicates;
-- 5. 验证 camera_code 格式(应为 cam_xxxxxxxxxxxx12位十六进制字符
SELECT '检查格式错误的 camera_code' AS check_name, COUNT(*) AS issue_count
FROM wvp_stream_proxy
WHERE camera_code NOT REGEXP '^cam_[a-f0-9]{12}$';
-- 6. 更新 ROI 表中的 camera_id从 app/stream 格式改为 camera_code
UPDATE wvp_ai_roi r
INNER JOIN wvp_stream_proxy sp ON r.camera_id = CONCAT(sp.app, '/', sp.stream)
SET r.camera_id = sp.camera_code;
-- 7. 验证 ROI 更新结果
SELECT '检查未匹配的 ROI' AS check_name, COUNT(*) AS issue_count
FROM wvp_ai_roi r
LEFT JOIN wvp_stream_proxy sp ON r.camera_id = sp.camera_code
WHERE sp.camera_code IS NULL;
-- 8. 显示迁移后的样本数据
SELECT id, camera_code, app, stream, name
FROM wvp_stream_proxy
LIMIT 5;
SELECT roi_id, camera_id, name
FROM wvp_ai_roi
LIMIT 5;