如何在列不是auto_increment的情况下插入自动增量ID

时间:2015-03-15 16:48:08

标签: sql insert auto-increment

我正在尝试在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)

我不想更改字段属性,因此我不会干扰软件功能 有谁知道怎么做?

感谢

2 个答案:

答案 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