数据迁移时向非空DateTime等字段插入数据的SQL解决方案咨询
SQL数据迁移脚本修改方案
报错原因
新表[Mondo-UAT].[dbo].[Countries]的CreatedDate字段设置为不允许NULL,原INSERT语句未对该字段赋值;同时CreateBy也是非空字段,同样需要明确赋值,否则会触发插入失败。
修改后的完整INSERT脚本
INSERT INTO [Mondo-UAT].[dbo].[Countries] ( [Country_Name] ,[Country_Code] ,[Note] ,[Status] ,[CreateBy] ,[CreateDate] ) SELECT [Code1] ,[Code3] ,[Name] -- 旧表Name字段映射到新表Note,若不需要可替换为''或NULL(需确保Note字段允许NULL) ,1 -- Status字段赋值为启用状态(bool类型,1代表True,0代表False,按需调整) ,1 -- CreateBy赋值为迁移操作的用户ID,替换为实际业务中的合法用户ID即可 ,GETDATE() -- CreateDate赋值为当前系统时间,也可指定固定时间如'2024-05-20' FROM [MondoErp-UAT].[dbo].[Nations]
各字段赋值说明
- CreateDate:用
GETDATE()获取当前数据库服务器时间作为迁移时的创建时间;若需要统一历史时间,可直接填写固定日期字符串(需符合DateTime格式)。 - CreateBy:填写执行本次迁移操作的用户ID(需是新系统中存在的合法用户ID),无特定业务要求时可设为默认管理员ID(如1)。
- Note:延续原脚本逻辑用旧表
Name字段填充;若业务不需要,可改为空字符串'',但要确认新表Note字段是否允许NULL。 - Status:根据业务规则设置默认状态,SQL Server中bool类型用1/0表示True/False,按需调整即可。
内容的提问来源于stack exchange,提问作者Dev Beginner
相关产品推荐
相关产品推荐

