1e8ca4d7-cb7b-80c5-a27c-f5855ec4b4重要提醒: 在执行脚本之前,必须将人员ID信息录入到总团队信息→分团队信息部署好权限 []()
-- 创建备份表
CREATE TABLE wiz_kb_user_role_backup AS SELECT * FROM wiz_kb_user_role;
备份数据表
-- 检查将要添加的数据
SELECT
t.KB_GUID as '团队ID',
u.USER_GUID as '用户ID'
FROM (
SELECT DISTINCT KB_GUID FROM wiz_kb_user_role
) t
CROSS JOIN (
SELECT DISTINCT USER_GUID FROM wiz_kb_user_role
) u
WHERE NOT EXISTS (
SELECT 1
FROM wiz_kb_user_role e
WHERE e.KB_GUID = t.KB_GUID
AND e.USER_GUID = u.USER_GUID
)
ORDER BY t.KB_GUID, u.USER_GUID;
只用于查看将要添加的数据
不会修改任何数据
安全可靠
建议先执行这个检查数据
USE wizasent;
-- 创建临时表来存储所有用户
CREATE TEMPORARY TABLE temp_all_users AS
SELECT DISTINCT USER_GUID FROM wiz_kb_user_role;
-- 创建临时表来存储所有团队
CREATE TEMPORARY TABLE temp_all_teams AS
SELECT DISTINCT KB_GUID FROM wiz_kb_user_role;
-- 创建临时表来存储已存在的组合
CREATE TEMPORARY TABLE temp_existing_combinations AS
SELECT DISTINCT KB_GUID, USER_GUID FROM wiz_kb_user_role;
-- 插入新组合
INSERT INTO wiz_kb_user_role (
KB_GUID,
USER_GUID,
USER_GROUP,
DT_CREATED,
ROLE_STATE,
ROLE_NOTE
)
SELECT
t.KB_GUID,
u.USER_GUID,
1000, -- 设置权限为读者
NOW(), -- 当前时间
1, -- 状态为1
'admin accept' -- 备注
FROM temp_all_teams t
CROSS JOIN temp_all_users u
WHERE NOT EXISTS (
SELECT 1
FROM temp_existing_combinations e
WHERE e.KB_GUID = t.KB_GUID
AND e.USER_GUID = u.USER_GUID
);
-- 清理临时表
DROP TEMPORARY TABLE IF EXISTS temp_all_users;
DROP TEMPORARY TABLE IF EXISTS temp_all_teams;
DROP TEMPORARY TABLE IF EXISTS temp_existing_combinations;
实际执行数据添加操作
使用临时表提高效率
最后会清理所有临时表
建议在检查数据无误后执行