BEGIN; -- Step A: rename project 4 away from the canonical name first (still active). UPDATE projects SET name = '全自动冲击波治疗仪 (retired-4)', updated_at = now() WHERE id = 4; -- Step B: retire project 4. UPDATE projects SET status = 'demo_retired', updated_at = now() WHERE id = 4; -- Step C: restore project 5 canonical name. UPDATE projects SET name = '全自动冲击波治疗仪', updated_at = now() WHERE id = 5; -- Step D: fix session owners. UPDATE chat_sessions SET user_id = 32, updated_at = now() WHERE session_id = 'sess-p5-u32' AND project_id = 5 AND user_id = 4; UPDATE chat_sessions SET user_id = 33, updated_at = now() WHERE session_id = 'sess-p5-u33' AND project_id = 5 AND user_id = 4; INSERT INTO chat_sessions (session_id, user_id, project_id, title, created_at, updated_at) VALUES ('sess-p5-u35', 35, 5, '全自动冲击波治疗仪', now(), now()) ON CONFLICT (session_id) DO UPDATE SET user_id = EXCLUDED.user_id, project_id = EXCLUDED.project_id, title = COALESCE(NULLIF(EXCLUDED.title, ''), chat_sessions.title), updated_at = now(); COMMIT; SELECT id, name, creator_user_id, status FROM projects WHERE id IN (4,5) ORDER BY id; SELECT session_id, user_id, project_id FROM chat_sessions WHERE project_id=5 ORDER BY session_id;