如何使用范围标识与更新查询

时间:2016-04-01 07:47:52

标签: sql sql-server tsql

我有一个id作为主键,我在插入过程中设置了id=scope identity()

但我无法在更新程序中使用该ID。

我想编写一个过程,用于在where条件中更新id,即

UPDATE TABLE [table name] 
SET col = @col, col2 = @col2 
WHERE id = @id

但我的ID是自动生成的,即id int identity(1,1)

我应该如何编写更新程序?

2 个答案:

答案 0 :(得分:0)

您需要将@id作为存储过程的in参数。 您的存储过程应该类似于:

CREATE PROCEDURE <Procedure name>
(
   @id INT,
   @col1 <datatype>,
   @col1 <datatype>
)
AS
   UPDATE TABLE [table name] 
   SET col = @col, col2 = @col2 
   WHERE id = @id

答案 1 :(得分:0)

我能理解的是,您希望使用@id = scope_identity()更新最近插入行的表。请参阅下面的代码来实现这一目标:

create proc abc
@col1 int,
@col2 int,
@id int
as
begin
set @id = ident_insert('TableA')
UPDATE TABLE [table name] 
SET col = @col, col2 = @col2 
WHERE id = @id
end

如果这有帮助,请告诉我。