2016-04-01 11 views
0

Ich habe eine id als Primärschlüssel und ich setze id=scope identity() in der Einfüge-Prozedur.Wie Scope-Identität mit Update-Abfrage verwenden

Aber ich kann diese ID mit Update-Prozedur nicht verwenden.

Ich möchte ein Verfahren schreiben, die die Tabelle mit der ID in der where Bedingung aktualisiert werden, dh

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

aber meine ID ist also automatisch generiert, id int identity(1,1)

Wie soll ich Update-Prozedur schreiben ?

+0

Wenn Sie einen Eintrag in der Datenbank aktualisieren wollen, ist es ein großer Vorteil, seine ID zu wissen ;-). Oder haben Sie eine andere Kombination von Kriterien, die einen Artikel einzigartig macht? – schlonzo

+0

Google Store-Prozedur mit Out-Parameter –

+0

"Aber ich kann diese ID mit Update-Prozedur nicht verwenden" warum Sie diese ID nicht im Update-Verfahren verwenden können .. ist es, weil Sie diesen Wert nicht halten oder aufgrund einer anderen Grund? –

Antwort

0

Sie müssen @id als in Parameter zu Ihrer gespeicherten Prozedur haben. Ihre gespeicherte Prozedur wahrscheinlich so etwas wie aussehen soll:

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

ich habe id aber ist autogenerated.i.e ich habe diese id als identity (1,1) gesetzt. –

+0

@ShitalKashte Sie können nur Ser-Identität (1,1) in DDL –

+0

create table [tbl_name] (ID int Primärschlüssel nicht null Identität (1,1)) Ich habe dies in SQL erstellt –

0

Was könnte ich verstehen, dass Sie die Tabelle mit der letzten eingefügten Zeile mit @id = scope_identity() aktualisiert werden sollen. Bitte unter dem Code sehen, dies zu erreichen:

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 

Lassen Sie mich wissen, ob das hilft ..

Verwandte Themen