我正在尝试在ID为int的表中插入一些数据。 Id是唯一的,我不知道为什么这个软件的开发人员没有将此字段设置为auto_increment
所以通常这会起作用,因为使用auto_increment我会排除ID 它将自动填充。
Insert into [dbtest].[dbo].[tArtikelAttribute]
([kArtikel] ,[cName] ,[cValue])
Select [kArtikelAttribute], kArtikel, 'han', cHan
from [dbtest].[dbo].[tartikel] Where cHan is not NULL
我收到此错误
Msg 515,Level 16,State 2,Line 2 无法将值NULL插入到kArtikelAttribute列dbtest.dbo.tArtikelAttribute表中。该列不允许空值。 INSERT错误。声明已经完成
表[tArtikelAttribute]是
ID(PK,int,Not Null)
kartikel(int,null)
cname(varchar(255),null)
cvalue(varchar(4000),null)
我不想更改字段属性,因此我不会干扰软件功能 有谁知道怎么做?
感谢
答案 0 :(得分:1)
我无法将此作为评论发布,因为我没有足够的声誉来执行该操作。
尝试查看此链接:SQL Server, How to set auto increment after creating a table without data loss?
可能会有所帮助。
答案 1 :(得分:1)
我找到了答案,感谢您使用row_number()
的帮助 Insert into [eazybusiness].[dbo].[tArtikelAttribute]
([kArtikelAttribute], [kArtikel] ,[cName] ,[cValue])
Select (Select max([kArtikelAttribute])
from [eazybusiness].[dbo].[tArtikelAttribute])
+ ROW_NUMBER() OVER (ORDER BY kArtikel), kArtikel, 'han', cHan
from [eazybusiness].[dbo].[tartikel] Where cHan is not NULL