-- 非付费互动支持 deviceId 归属;登录时由应用事务合并到账号。 ALTER TABLE content_like ADD COLUMN IF NOT EXISTS device_id VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE content_like ALTER COLUMN user_id DROP NOT NULL; DROP INDEX IF EXISTS uk_content_like; CREATE UNIQUE INDEX IF NOT EXISTS uk_content_like_user ON content_like (user_id, target_type, target_id) WHERE user_id IS NOT NULL; CREATE UNIQUE INDEX IF NOT EXISTS uk_content_like_device ON content_like (device_id, target_type, target_id) WHERE user_id IS NULL AND device_id <> ''; CREATE INDEX IF NOT EXISTS idx_content_like_device ON content_like (device_id, created_at DESC) WHERE device_id <> ''; ALTER TABLE user_favorite ADD COLUMN IF NOT EXISTS device_id VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE user_favorite ALTER COLUMN user_id DROP NOT NULL; DROP INDEX IF EXISTS uk_user_favorite; CREATE UNIQUE INDEX IF NOT EXISTS uk_user_favorite_user ON user_favorite (user_id, drama_id) WHERE user_id IS NOT NULL; CREATE UNIQUE INDEX IF NOT EXISTS uk_user_favorite_device ON user_favorite (device_id, drama_id) WHERE user_id IS NULL AND device_id <> ''; CREATE INDEX IF NOT EXISTS idx_user_favorite_device ON user_favorite (device_id, created_at DESC) WHERE device_id <> ''; ALTER TABLE content_comment ADD COLUMN IF NOT EXISTS device_id VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE content_comment ALTER COLUMN user_id DROP NOT NULL; CREATE INDEX IF NOT EXISTS idx_comment_device ON content_comment (device_id, created_at DESC) WHERE user_id IS NULL AND device_id <> ''; CREATE UNIQUE INDEX IF NOT EXISTS uk_content_comment_user_content ON content_comment ( user_id, drama_id, episode_id, parent_id, md5(content) ) WHERE user_id IS NOT NULL AND deleted = 0 AND status <> 'deleted'; CREATE UNIQUE INDEX IF NOT EXISTS uk_content_comment_device_content ON content_comment ( device_id, drama_id, episode_id, parent_id, md5(content) ) WHERE user_id IS NULL AND device_id <> '' AND deleted = 0 AND status <> 'deleted';