SGGL_SHJ/DataBase/版本日志/SGGLDB_V2026-03-05-001.sql

145 lines
5.7 KiB
MySQL
Raw Normal View History

-- =============================================
-- 材料仓库管理与管线划分优化 - 数据库变更脚本
-- 生成时间: 2026-03-05
-- 说明: 请在执行前备份数据库
-- =============================================
-- =============================================
-- 第一部分: 创建材料仓库表
-- =============================================
-- 检查表是否存在,如果存在则删除(仅用于开发环境)
-- IF OBJECT_ID('dbo.Base_Warehouse', 'U') IS NOT NULL
-- DROP TABLE dbo.Base_Warehouse;
-- GO
-- 创建材料仓库表
CREATE TABLE dbo.Base_Warehouse (
WarehouseId NVARCHAR(50) NOT NULL,
WarehouseName NVARCHAR(200) NOT NULL,
Remark NVARCHAR(500) NULL,
ProjectId NVARCHAR(50) NOT NULL,
CreateUserId NVARCHAR(50) NULL,
CreateTime DATETIME NULL,
ModifyUserId NVARCHAR(50) NULL,
ModifyTime DATETIME NULL,
CONSTRAINT PK_Base_Warehouse PRIMARY KEY CLUSTERED (WarehouseId ASC),
CONSTRAINT FK_Base_Warehouse_Project FOREIGN KEY (ProjectId)
REFERENCES dbo.Project_Project (ProjectId)
ON DELETE NO ACTION
);
GO
-- 创建索引以提升查询性能
CREATE NONCLUSTERED INDEX IX_Base_Warehouse_ProjectId
ON dbo.Base_Warehouse(ProjectId);
GO
CREATE NONCLUSTERED INDEX IX_Base_Warehouse_WarehouseName
ON dbo.Base_Warehouse(WarehouseName);
GO
-- 添加表说明
EXEC sys.sp_addextendedproperty
@name=N'MS_Description',
@value=N'材料仓库基础信息表' ,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=N'Base_Warehouse';
GO
-- 添加字段说明
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'仓库ID主键' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'WarehouseId';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'仓库名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'WarehouseName';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'备注' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'Remark';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'项目ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'ProjectId';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'CreateUserId';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'CreateTime';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改人ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'ModifyUserId';
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Base_Warehouse', @level2type=N'COLUMN',@level2name=N'ModifyTime';
GO
PRINT '材料仓库表创建完成';
GO
-- =============================================
-- 第二部分: 为管线表添加仓库字段
-- =============================================
-- 检查字段是否已存在
IF NOT EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.HJGL_Pipeline')
AND name = 'WarehouseId'
)
BEGIN
-- 添加 WarehouseId 字段允许NULL以兼容现有数据
ALTER TABLE dbo.HJGL_Pipeline
ADD WarehouseId NVARCHAR(50) NULL;
GO
-- 添加字段说明
EXEC sys.sp_addextendedproperty
@name=N'MS_Description',
@value=N'仓库ID关联Base_Warehouse表' ,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=N'HJGL_Pipeline',
@level2type=N'COLUMN',
@level2name=N'WarehouseId';
GO
-- 添加外键约束(可选,根据实际需求决定是否启用)
-- ALTER TABLE dbo.HJGL_Pipeline
-- ADD CONSTRAINT FK_HJGL_Pipeline_Warehouse
-- FOREIGN KEY (WarehouseId)
-- REFERENCES dbo.Base_Warehouse(WarehouseId)
-- ON DELETE SET NULL;
-- GO
PRINT '管线表WarehouseId字段添加完成';
END
ELSE
BEGIN
PRINT '管线表WarehouseId字段已存在跳过添加';
END
GO
-- =============================================
-- 第三部分: 验证脚本
-- =============================================
-- 验证表和字段创建成功
SELECT
'Base_Warehouse表' AS ,
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Base_Warehouse')
THEN '已创建 ✓'
ELSE '未创建 ✗'
END AS ;
SELECT
'HJGL_Pipeline.WarehouseId字段' AS ,
CASE WHEN EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'HJGL_Pipeline'
AND COLUMN_NAME = 'WarehouseId'
)
THEN '已添加 ✓'
ELSE '未添加 ✗'
END AS ;
GO
PRINT '========================================';
PRINT '数据库变更脚本执行完成!';
PRINT '========================================';
PRINT '';
PRINT '重要提示:';
PRINT '1. 请在生产环境执行前备份数据库';
PRINT '2. 建议在维护窗口执行ALTER TABLE操作';
PRINT '3. 现有管线数据的WarehouseId默认为NULL';
PRINT '4. 可通过批量设置功能逐步完善数据';
PRINT '========================================';
GO