如何在列不是 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
我正在尝试在 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