如何在列不是 auto_increment 的地方插入自动递增 ID

How to Insert auto increment ID where column not auto_increment

我正在尝试在 ID 为 int 的 Table 中插入一些数据。 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

我收到这个错误

消息 515,级别 16,状态 2,第 2 行 值 NULL 无法插入到 kArtikelAttribute 列 dbtest.dbo.tArtikelAttribute table。该列不允许空值。插入错误。声明已完成

table [tArtikelAttribute] 是
ID(PK,整数,非空)
kartikel (int, null)
cname (varchar(255), null)
cvalue (varchar(4000), null)

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

谢谢

我无法post将此作为评论,因为我没有足够的声誉来执行该操作。

试着看看这个 link : SQL Server, How to set auto increment after creating a table without data loss?

可能会有帮助。

我找到了答案,感谢您使用 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