Files
SGGL_HBAZ/DataBase/版本日志/SGGLDB_V2026-08-26-001-zones.sql
T
2026-09-04 14:31:07 +08:00

54 lines
1.8 KiB
Transact-SQL

-- =====================================================================
-- 安全巡检记录表:增加 编码(Code) 字段
-- 说明:编码全局唯一(前缀 XJ- + 三位递增序号,如 XJ-001)。
-- 移动端/桌面端新增时由服务自动生成,编码不可重复。
-- 幂等:若列已存在则跳过;若唯一索引已存在则跳过,可重复执行。
-- =====================================================================
-- 编码列
IF NOT EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[HSSE_SafetyPatrol]') AND name = N'Code'
)
BEGIN
ALTER TABLE [dbo].[HSSE_SafetyPatrol] ADD [Code] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL;
END
GO
-- 为已有记录回填编码(按巡检日期升序,序号从 1 开始,前缀 XJ-)
UPDATE c
SET c.Code = N'XJ-' + FORMAT(t.rn, 'D3')
FROM [dbo].[HSSE_SafetyPatrol] c
INNER JOIN (
SELECT PatrolId,
ROW_NUMBER() OVER (ORDER BY PatrolDate, PatrolId) AS rn
FROM [dbo].[HSSE_SafetyPatrol]
WHERE Code IS NULL
) t ON c.PatrolId = t.PatrolId;
GO
-- 编码唯一索引
IF NOT EXISTS (
SELECT 1 FROM sys.indexes
WHERE object_id = OBJECT_ID(N'[dbo].[HSSE_SafetyPatrol]') AND name = N'UX_HSSE_SafetyPatrol_Code'
)
BEGIN
CREATE UNIQUE INDEX [UX_HSSE_SafetyPatrol_Code]
ON [dbo].[HSSE_SafetyPatrol] ([Code]);
END
GO
-- 编码 中文注释(幂等:注释不存在才添加)
IF NOT EXISTS (
SELECT 1 FROM sys.extended_properties
WHERE major_id = OBJECT_ID(N'[dbo].[HSSE_SafetyPatrol]')
AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'[dbo].[HSSE_SafetyPatrol]'), N'Code', 'ColumnId')
AND name = N'MS_Description'
)
EXEC sp_addextendedproperty
'MS_Description', N'编码(全局唯一,格式 XJ-序号,自动生成)',
'SCHEMA', N'dbo',
'TABLE', N'HSSE_SafetyPatrol',
'COLUMN', N'Code';
GO