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”。它是主键,它是身份(自动增量)。
那么,我怎么能处理这个缺失的东西是一个身份。我不想从我的前端传递该参数。
答案 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
马克