2016-04-01 6 views
0

私はidを主キーとして持っており、その挿入手順にはid=scope identity()を設定しています。更新クエリでスコープIDを使用する方法

しかし、このIDを更新手順で使用することはできません。

私はWHERE条件、すなわち、

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

にidを持つテーブルを更新する手順を書きたいが、私のidがすなわち自動生成され、id int identity(1,1)

がどのように更新手順を記述する必要があります?

+0

...このことができますなら、私に教えてください。または、項目をユニークにする基準の別の組み合わせがありますか? – schlonzo

+0

出力パラメータが –

+0

のGoogleストアプロシージャ「このIDを更新プロシージャで使用することができません」なぜこのIDを更新プロシージャで使用できないのですか?この値を保持していないか、理由?私は、SQL Server \tを使用しています –

答えて

0

@idをストアドプロシージャのパラメータとして使用する必要があります。 あなたのストアドプロシージャは、おそらく次のようになります。私が理解できることは、あなたが@id = SCOPE_IDENTITY()を使用して、最近挿入された行を持つ表を更新したいということです

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

私はidを持っていますが、autogenerated.i.eです。私はidをidentity(1,1)として設定しています。 –

+0

@ShitalKashteあなたはDDLのser identity(1,1)しか作成できません –

+0

create table [tbl_name](id int主キーではなくnull identity(1,1))これはsqlで作成しました –

0

。これを達成するために、コードの下に参照してください。

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 

は、データベース内のエントリを更新したい場合は、そのIDの;-)を知ることが大きな利点だ

関連する問題