54 lines
1.8 KiB
Transact-SQL
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
|