45 lines
1.1 KiB
MySQL
45 lines
1.1 KiB
MySQL
|
|
-- 将 user_temp 迁移为 user(mobile 为空)与 user_auth
|
|||
|
|
|
|||
|
|
START TRANSACTION;
|
|||
|
|
|
|||
|
|
-- 1) 迁移临时用户到 user(mobile 置为空)
|
|||
|
|
INSERT INTO
|
|||
|
|
`user` (
|
|||
|
|
`delete_time`,
|
|||
|
|
`del_state`,
|
|||
|
|
`version`,
|
|||
|
|
`mobile`,
|
|||
|
|
`password`,
|
|||
|
|
`nickname`,
|
|||
|
|
`info`,
|
|||
|
|
`inside`
|
|||
|
|
)
|
|||
|
|
SELECT NULL, 0, COALESCE(ut.version, 0), NULL, NULL, NULL, '', 0
|
|||
|
|
FROM `user_temp` ut
|
|||
|
|
WHERE
|
|||
|
|
ut.del_state = 0;
|
|||
|
|
|
|||
|
|
-- 2) 将临时认证迁移到 user_auth(按插入顺序关联最近插入的 user.id)
|
|||
|
|
INSERT INTO
|
|||
|
|
`user_auth` (
|
|||
|
|
`delete_time`,
|
|||
|
|
`del_state`,
|
|||
|
|
`version`,
|
|||
|
|
`user_id`,
|
|||
|
|
`auth_key`,
|
|||
|
|
`auth_type`
|
|||
|
|
)
|
|||
|
|
SELECT NULL, 0, COALESCE(ut.version, 0), u.id, ut.auth_key, ut.auth_type
|
|||
|
|
FROM `user_temp` ut
|
|||
|
|
JOIN `user` u ON u.del_state = 0
|
|||
|
|
AND u.mobile IS NULL
|
|||
|
|
WHERE
|
|||
|
|
ut.del_state = 0;
|
|||
|
|
|
|||
|
|
-- 注意:以上为示意,实际生产应通过显式映射(如临时ID与新UserID映射表)确保一一对应,避免笛卡尔匹配。
|
|||
|
|
|
|||
|
|
COMMIT;
|
|||
|
|
|
|||
|
|
-- 唯一索引保障
|
|||
|
|
ALTER TABLE `user_auth`
|
|||
|
|
ADD UNIQUE INDEX `idx_auth_type_key` (`auth_type`, `auth_key`);
|