-- ===================================================================== -- 安全巡检记录表:增加 编码(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