为现有表rowguid列插入UNIQUEIDENTIFIER时出现列不允许空值错误
问题解决方法
你用的INSERT语句是用来新增一行数据的,但你的表中存在其他不允许为空的列,执行INSERT时没给这些列赋值,所以触发了非空约束报错。而你的需求是给表中已存在的所有行的rowguid列填充GUID值,正确的做法是使用UPDATE语句:
UPDATE [myschema].[mytablename] SET rowguid = NEWID()
这条语句会遍历表中每一行,给rowguid列生成一个唯一的GUID。
如果想让后续新增数据时,rowguid列自动生成GUID,可以给该列添加默认值,还可以根据业务需求把列设置为非空:
ALTER TABLE [myschema].[mytablename] ALTER COLUMN rowguid uniqueidentifier NOT NULL DEFAULT NEWID();
设置完成后,后续执行INSERT新增行时,即使不指定rowguid的值,数据库也会自动为该列生成唯一的GUID。
内容的提问来源于stack exchange,提问作者Mons
相关产品推荐
相关产品推荐

