156 lines
6.3 KiB
SQL
156 lines
6.3 KiB
SQL
-- ========================================
|
||
-- 团播机构 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 '=========================================' |