live-forum/server/webapi/数据库脚本/v1.0.1_upgrade.sql
2026-03-24 11:27:37 +08:00

156 lines
6.3 KiB
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.

-- ========================================
-- 团播机构 v1.0.1 数据库升级脚本
-- 创建时间: 2025-01-10
-- 说明: 包含首页弹窗功能和Banner跳转功能的数据库修改
-- ========================================
-- 检查脚本执行环境
PRINT '开始执行 v1.0.1 数据库升级脚本...'
PRINT '执行时间: ' + CONVERT(VARCHAR, GETDATE(), 120)
-- ========================================
-- 1. 创建首页弹窗表 T_HomePopups
-- ========================================
PRINT '正在创建首页弹窗表 T_HomePopups...'
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups')
BEGIN
CREATE TABLE T_HomePopups (
Id INT PRIMARY KEY IDENTITY(1,1),
Title NVARCHAR(100) NULL COMMENT '弹窗标题',
ImageUrl NVARCHAR(500) NOT NULL COMMENT '弹窗图片URL地址',
LinkType INT NULL COMMENT '链接类型1-外部链接2-内部页面(帖子)3-内部页面(通知)4-无链接',
LinkUrl NVARCHAR(500) NULL COMMENT '点击跳转的链接地址',
TargetId BIGINT NULL COMMENT '目标ID如帖子ID或通知ID配合LinkType使用',
IsActive BIT NOT NULL DEFAULT 1 COMMENT '是否启用该弹窗',
StartTime DATETIME2 NULL COMMENT '弹窗开始展示时间',
EndTime DATETIME2 NULL COMMENT '弹窗结束展示时间',
SortOrder INT NOT NULL DEFAULT 0 COMMENT '排序顺序,数字越小越靠前',
ViewCount INT NOT NULL DEFAULT 0 COMMENT '弹窗浏览次数',
ClickCount INT NOT NULL DEFAULT 0 COMMENT '弹窗点击次数',
CreatedAt DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '弹窗创建时间',
UpdatedAt DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '弹窗更新时间'
);
PRINT '✓ T_HomePopups 表创建成功'
END
ELSE
BEGIN
PRINT '⚠ T_HomePopups 表已存在,跳过创建'
END
-- ========================================
-- 2. 为 T_HomePopups 表添加索引
-- ========================================
PRINT '正在为 T_HomePopups 表添加索引...'
-- 添加复合索引用于查询启用的弹窗
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_IsActive_StartTime_EndTime')
BEGIN
CREATE INDEX IX_T_HomePopups_IsActive_StartTime_EndTime ON T_HomePopups (IsActive, StartTime, EndTime);
PRINT '✓ 索引 IX_T_HomePopups_IsActive_StartTime_EndTime 创建成功'
END
-- 添加排序索引
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_SortOrder')
BEGIN
CREATE INDEX IX_T_HomePopups_SortOrder ON T_HomePopups (SortOrder);
PRINT '✓ 索引 IX_T_HomePopups_SortOrder 创建成功'
END
-- ========================================
-- 3. 更新 T_Banners 表的 LinkType 约束
-- ========================================
PRINT '正在更新 T_Banners 表的 LinkType 约束...'
-- 检查并删除旧约束
IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType')
BEGIN
ALTER TABLE T_Banners DROP CONSTRAINT CK_T_Banners_LinkType;
PRINT '✓ 删除旧的 LinkType 约束'
END
-- ========================================
-- 4. 添加弹窗链接类型字典
-- ========================================
PRINT '正在添加弹窗链接类型字典...'
-- 添加字典类型
IF NOT EXISTS (SELECT * FROM sys_dict_type WHERE DictType = 'liveforum_popup_linktype')
BEGIN
INSERT INTO sys_dict_type (DictName, DictType, Status, Type, Create_by, Create_time, Remark)
VALUES ('弹窗链接类型', 'liveforum_popup_linktype', '0', 'N', 'admin', GETDATE(), '首页弹窗链接类型配置');
PRINT '✓ 添加弹窗链接类型字典类型'
END
ELSE
BEGIN
PRINT '⚠ 弹窗链接类型字典类型已存在,跳过添加'
END
-- 添加字典数据
IF NOT EXISTS (SELECT * FROM sys_dict_data WHERE DictType = 'liveforum_popup_linktype' AND DictValue = '1')
BEGIN
INSERT INTO sys_dict_data (DictSort, DictLabel, DictValue, DictType, Status, Create_by, Create_time) VALUES
(1, '外部链接', '1', 'liveforum_popup_linktype', '0', 'admin', GETDATE()),
(2, '帖子详情', '2', 'liveforum_popup_linktype', '0', 'admin', GETDATE()),
(4, '无链接', '4', 'liveforum_popup_linktype', '0', 'admin', GETDATE());
PRINT '✓ 添加弹窗链接类型字典数据'
END
ELSE
BEGIN
PRINT '⚠ 弹窗链接类型字典数据已存在,跳过添加'
END
-- ========================================
-- 6. 插入示例数据(可选,生产环境可注释掉)
-- ========================================
PRINT '正在插入示例数据...'
-- 插入首页弹窗示例数据
IF NOT EXISTS (SELECT * FROM T_HomePopups WHERE Title = '欢迎使用')
BEGIN
INSERT INTO T_HomePopups (Title, ImageUrl, LinkType, IsActive, SortOrder)
VALUES ('欢迎使用', 'https://example.com/popup.jpg', 4, 1, 1);
PRINT '✓ 插入首页弹窗示例数据'
END
-- ========================================
-- 7. 验证升级结果
-- ========================================
PRINT '正在验证升级结果...'
-- 验证 T_HomePopups 表
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups')
PRINT '✓ T_HomePopups 表验证通过'
ELSE
PRINT '✗ T_HomePopups 表验证失败'
-- 验证约束
IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType' AND definition LIKE '%[LinkType]=(4)%')
PRINT '✓ T_Banners LinkType 约束验证通过'
ELSE
PRINT '✗ T_Banners LinkType 约束验证失败'
-- ========================================
-- 升级完成
-- ========================================
PRINT ''
PRINT '========================================='
PRINT 'v1.0.1 数据库升级脚本执行完成!'
PRINT '完成时间: ' + CONVERT(VARCHAR, GETDATE(), 120)
PRINT '========================================='
PRINT ''
PRINT '升级内容总结:'
PRINT '1. ✓ 创建首页弹窗表 T_HomePopups'
PRINT '2. ✓ 添加相关索引优化查询性能'
PRINT '3. ✓ 更新 T_Banners 表约束支持新的链接类型'
PRINT '4. ✓ 添加弹窗链接类型字典配置'
PRINT '5. ✓ 更新 Banner 链接类型字典'
PRINT '6. ✓ 插入必要的示例数据'
PRINT ''
PRINT '注意事项:'
PRINT '- 请确保应用程序代码已同步更新'
PRINT '- 建议在低峰期执行此脚本'
PRINT '- 执行前请备份数据库'
PRINT '========================================='