Sql server 2008 Msg 544,16级,状态1错误程序

Sql server 2008 Msg 544,16级,状态1错误程序,sql-server-2008,Sql Server 2008,尝试运行insert语句时: ALTER proc [dbo].[sp_register] @code int output, @name varchar(50), @description varchar, @phone int as insert into user (code,name,description,phone) values (@code,@name,@description,@phone) set @code = @@IDENTITY 我得到以下错误: Msg 544,1

尝试运行insert语句时:

ALTER proc [dbo].[sp_register]
@code int output,
@name varchar(50),
@description varchar,
@phone int
as
insert into user (code,name,description,phone)
values (@code,@name,@description,@phone)
set @code = @@IDENTITY 
我得到以下错误:

Msg 544,16级,状态1,程序sp_寄存器,第8行 当identity\U insert设置为OFF时,无法在表“user”中为identity列插入显式值

无法插入到“代码”列中,因为它是自动生成的。 将其更改为:

insert into user (name,description,phone)
values (@name,@description,@phone)
无法插入到“代码”列中,因为它是自动生成的。 将其更改为:

insert into user (name,description,phone)
values (@name,@description,@phone)

如果您再次遇到这种情况,并且确实需要向标识列中添加值,通常这是一种不好的做法,但不管怎样,这种情况偶尔会发生。。。按如下操作:先将IDENTITY\u INSERT user设置为ON,然后将存储过程的其余部分设置为off,然后再将IDENTITY\u INSERT user设置为off如果您再次遇到此问题,您确实需要将值添加到IDENTITY列中通常这是一种不好的做法,但无论如何,这种情况偶尔会发生一次。。。按如下操作:先将IDENTITY\u INSERT user设置为ON,然后将存储过程的其余部分设置为OFF,再将IDENTITY\u INSERT user设置为OFF。另外,请,请永远不要使用@IDENTITY。在这种情况下,您应该使用作用域\标识。另外,请,请,请永远不要使用@标识。在这种情况下,您应该使用SCOPE_IDENTITY。