live-forum/server/webapi/LiveForum/DatabaseScripts/AddLikesUniqueIndex.sql
2026-03-24 11:27:37 +08:00

28 lines
854 B
SQL

-- 为 T_Likes 表添加唯一索引
-- 防止同一用户对同一目标重复点赞
-- 检查索引是否已存在,如果不存在则创建
IF NOT EXISTS (
SELECT 1
FROM sys.indexes
WHERE name = 'IX_T_Likes_User_Target'
AND object_id = OBJECT_ID('T_Likes')
)
BEGIN
CREATE UNIQUE NONCLUSTERED INDEX IX_T_Likes_User_Target
ON T_Likes(UserId, TargetType, TargetId);
PRINT '索引 IX_T_Likes_User_Target 创建成功';
END
ELSE
BEGIN
PRINT '索引 IX_T_Likes_User_Target 已存在,跳过创建';
END
-- 说明:
-- 1. 此索引确保同一用户不能对同一目标(帖子或评论)重复点赞
-- 2. 唯一索引会在数据库层面防止并发导致的重复数据
-- 3. 执行此脚本前请备份数据库
-- 4. 如果表中已有重复数据,创建索引会失败,需要先清理重复数据