-- 观看进度与观看流水支持 deviceId 归属;登录时由账号事务合并。 ALTER TABLE watch_progress ADD COLUMN IF NOT EXISTS device_id VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE watch_progress ALTER COLUMN user_id DROP NOT NULL; DROP INDEX IF EXISTS uk_watch_progress; CREATE UNIQUE INDEX IF NOT EXISTS uk_watch_progress_user ON watch_progress (user_id, drama_id) WHERE user_id IS NOT NULL; CREATE UNIQUE INDEX IF NOT EXISTS uk_watch_progress_device ON watch_progress (device_id, drama_id) WHERE user_id IS NULL AND device_id <> ''; CREATE INDEX IF NOT EXISTS idx_watch_progress_device ON watch_progress (device_id, updated_at DESC) WHERE device_id <> ''; ALTER TABLE watch_history ADD COLUMN IF NOT EXISTS device_id VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE watch_history ALTER COLUMN user_id DROP NOT NULL; CREATE INDEX IF NOT EXISTS idx_watch_history_device ON watch_history (device_id, watched_at DESC) WHERE user_id IS NULL AND device_id <> '';