Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v2/database/01-device-api-pull-precheck.sql
T

36 lines
2.1 KiB
SQL
Raw Normal View History

-- =============================================================================
-- 脚本:01-device-api-pull-precheck.sql
-- 用途:安装设备 API 拉取基础表之前,检查现有表结构是否满足升级条件。
-- 性质:只读脚本,不会修改表结构和业务数据,可以重复执行。
-- 执行时机:执行 02-device-api-pull-upgrade.sql 之前。
--
-- 重点检查:
-- 1. device_collect_task.method 当前使用了哪些值,避免新增 API 类型与旧值冲突;
-- 2. device_collect_task.id 和 device_device.id 是否都有主键;
-- 3. 两个主键字段的数据类型是否分别为 INTEGER/INT 和 BIGINT;
-- 4. 四张 DEVICE_COLLECT_API_* 表是否已经存在。
--
-- 判断方法:
-- - 任一 SQL 报错时,不要执行 02,先确认当前用户和 Schema 是否正确;
-- - 第四组查询返回 0 行,表示四张 API 拉取表尚未创建;
-- - 第四组查询有返回,表示可能执行过升级,应先运行 03 验证,不要直接重跑 02。
-- =============================================================================
-- 第 1 组:查看采集任务 method 的现有取值及任务数量。
SELECT method, COUNT(*) AS task_count FROM device_collect_task GROUP BY method ORDER BY method;
-- 第 2 组:确认两张被引用的旧表都有主键,每张表应各返回一条统计记录。
SELECT table_name, COUNT(*) AS pk_count FROM user_constraints
WHERE LOWER(table_name) IN ('device_collect_task','device_device') AND constraint_type='P'
GROUP BY table_name ORDER BY table_name;
-- 第 3 组:核对外键关联字段的数据类型、长度和是否允许为空。
SELECT table_name,column_name,data_type,data_length,data_precision,data_scale,nullable
FROM user_tab_columns
WHERE LOWER(table_name) IN ('device_collect_task','device_device') AND LOWER(column_name)='id'
ORDER BY table_name;
-- 第 4 组:检查目标表是否已存在。首次升级时应返回 0 行。
SELECT table_name FROM user_tables WHERE LOWER(table_name) IN
('device_collect_api_credential','device_collect_api_config','device_collect_api_checkpoint','device_collect_api_run');