SQL INSERT存储过程无法正常工作

时间:2009-08-28 15:27:34

标签: sql sql-server

Create Proc CrearNuevoAnuncio
    @Titulo varchar(250),
    @Precio int,
    @Descripcion varchar(250),
    @IDCategoria int,
    @IDImagen int,  
    @Login varchar(200)

AS

INSERT INTO Anuncio VALUES(
    @Titulo,
    @Precio,
    @Descripcion,
    @IDCategoria,
    @IDImagen,  
    @Login
    )

错误是因为表anuncio还有1个属性:“idAnuncio”。它是主键,它是身份(自动增量)。

那么,我怎么能处理这个缺失的东西是一个身份。我不想从我的前端传递该参数。

2 个答案:

答案 0 :(得分:8)

您需要指定哪个值到哪个字段。

INSERT INTO Anuncio (field1, field2, ...) VALUES (@Titulo, ...)

答案 1 :(得分:8)

您需要在insert语句中指定明确的列列表:

INSERT INTO 
   Anuncio(Titulo, Precio, Descripcion, IDCategoria, IDImagen, Login)
VALUES
   (@Titulo, @Precio, @Descripcion, @IDCategoria, @IDImagen,  @Login)

否则,SQL Server将尝试为此处失败的所有列插入值。它无法在IDENTITY列中插入值 - SQL Server会在插入新行时自动设置该列,并保证其唯一。

“INT IDENTITY”类型的ID字段是?在这种情况下,您可以访问新插入的ID的值,如下所示:

 DECLARE @NewID INT
 SET @NewID = SCOPE_IDENTITY()

并且可能从存储过程中返回它:

 RETURN @NewID

马克