mahjong_group/server/数据库/SqlServer/创建站内信表.sql
2026-01-01 14:35:52 +08:00

44 lines
1.9 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================
-- 站内信功能 - 数据库表创建脚本
-- 创建时间: 2025-12-07
-- =============================================
-- 表1: SQMessage (站内信消息表)
CREATE TABLE [dbo].[SQMessage] (
[id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[user_id] INT NULL, -- 接收用户ID全员广播时为NULL
[target_type] INT NOT NULL DEFAULT 0, -- 目标类型0=指定用户1=全员广播
[title] NVARCHAR(200) NOT NULL, -- 消息标题
[content] NVARCHAR(MAX) NOT NULL, -- 消息正文
[message_type] INT NOT NULL DEFAULT 0, -- 消息类型0=系统通知1=私信
[is_read] BIT NOT NULL DEFAULT 0, -- 是否已读(仅对指定用户消息有效)
[sender_id] INT NULL, -- 发送者ID后台管理员ID
[related_type] INT NULL, -- 关联业务类型1=组局
[related_id] INT NULL, -- 关联业务ID
[created_at] DATETIME NOT NULL DEFAULT GETDATE(),
[updated_at] DATETIME NULL
);
GO
-- 索引
CREATE INDEX IX_SQMessage_user_id ON [dbo].[SQMessage]([user_id]);
CREATE INDEX IX_SQMessage_target_type ON [dbo].[SQMessage]([target_type]);
CREATE INDEX IX_SQMessage_created_at ON [dbo].[SQMessage]([created_at] DESC);
GO
-- 表2: SQMessageRead (已读记录表 - 专门记录全员广播的已读状态)
CREATE TABLE [dbo].[SQMessageRead] (
[id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[message_id] INT NOT NULL, -- 消息ID
[user_id] INT NOT NULL, -- 用户ID
[read_at] DATETIME NOT NULL DEFAULT GETDATE()
);
GO
-- 索引(防重复 + 查询优化)
CREATE UNIQUE INDEX IX_SQMessageRead_msg_user ON [dbo].[SQMessageRead]([message_id], [user_id]);
CREATE INDEX IX_SQMessageRead_user_id ON [dbo].[SQMessageRead]([user_id]);
GO
PRINT '站内信表创建完成!';