Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL插入存储过程不工作_Sql_Sql Server - Fatal编程技术网

SQL插入存储过程不工作

SQL插入存储过程不工作,sql,sql-server,Sql,Sql Server,错误是因为表anuncio还有一个属性:“idAnuncio”。它是主键,也是标识(自动递增) 那么,我该如何处理这件事呢?缺少的是一个身份。我不想从前端传递该参数。您需要指定哪个值指向哪个字段 Create Proc CrearNuevoAnuncio @Titulo varchar(250), @Precio int, @Descripcion varchar(250), @IDCategoria int, @IDImagen int, @

错误是因为表anuncio还有一个属性:“idAnuncio”。它是主键,也是标识(自动递增)


那么,我该如何处理这件事呢?缺少的是一个身份。我不想从前端传递该参数。

您需要指定哪个值指向哪个字段

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