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

145 lines
5.7 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.

-- =============================================
-- 材料仓库管理与管线划分优化 - 数据库变更脚本
-- 生成时间: 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