SQL插入存储过程不工作
错误是因为表anuncio还有一个属性:“idAnuncio”。它是主键,也是标识(自动递增)SQL插入存储过程不工作,sql,sql-server,Sql,Sql Server,错误是因为表anuncio还有一个属性:“idAnuncio”。它是主键,也是标识(自动递增) 那么,我该如何处理这件事呢?缺少的是一个身份。我不想从前端传递该参数。您需要指定哪个值指向哪个字段 Create Proc CrearNuevoAnuncio @Titulo varchar(250), @Precio int, @Descripcion varchar(250), @IDCategoria int, @IDImagen int, @
那么,我该如何处理这件事呢?缺少的是一个身份。我不想从前端传递该参数。您需要指定哪个值指向哪个字段
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
)
您需要在insert语句中指定列的显式列表:
INSERT INTO Anuncio (field1, field2, ...) VALUES (@Titulo, ...)
否则,SQL Server将尝试为此处失败的所有列插入值。它无法在标识列中插入值-SQL Server将在插入新行时自动设置该列,并保证该列是唯一的
ID字段是否为“INT-IDENTITY”类型?在这种情况下,您可以访问新插入的ID的值,如下所示:
INSERT INTO
Anuncio(Titulo, Precio, Descripcion, IDCategoria, IDImagen, Login)
VALUES
(@Titulo, @Precio, @Descripcion, @IDCategoria, @IDImagen, @Login)
并可能从存储的进程返回它:
DECLARE @NewID INT
SET @NewID = SCOPE_IDENTITY()
Marc第三次使用坏标签。茨克茨克。键入“sql server”并不是那么难。并没有真正回答我的问题。我想插入一个新记录,但IdAnuncio是一个标识,只要有新记录,它就会自动递增。如何创建一个考虑到这一点的存储过程?好的,我使用上面的示例修改了我的代码,并且正确地执行了这个过程(它被创建),所以我认为我的PrimaryKey(标识类型)将自动递增,无论它是否在我的存储过程中没有提到过一次?是的,一个“标识”字段将由数据库自动处理-这就是我需要知道的标识的全部意义:3谢谢!
RETURN @NewID