2017-05-05 1 views
1

Ich habe 2 Tabellen, custlogin und custinfo:SQL Server gespeicherte Prozedur in mehreren Tabellen einfügen ein

custlogin:

custid int primary key auto notnull 
custusename varchar(25) 
custpassword varchar(50) 

CUSTINFO:

custid foriegnkey custlogin.custid ondelete set NULL 
custfirstname varchar(25) 
custlastname varchar(25) 
custaddress varchar(100) 

Ich möchte eine gespeicherte schreiben Verfahren, das in beide Tabellen einfügen wird

Präziser ly, fügen Sie in custlogin mit custusername custpassword ein, das curtid für die Verwendung als Fremdschlüssel für custinfo zurückgeben würde.

Ich habe viel gesucht, aber ich habe keine Lösung gefunden.

Antwort

0

Es wird etwas wie unten sein. Sie können SCOPE_IDENTITY() verwenden, um die letzte automatisch generierte ID withing den Umfang zu erhalten, die diese gespeicherte Prozedur in diesem Fall:

create procedure NameOfYourProcedureHere 
as 
begin 

    insert into custlogin(custusename, custpassword) 
     values ('','') -- put values here (from parameters?) 

    insert into custinfo(custid, custfirstname, custlastname, custaddress) 
     values (SCOPE_IDENTITY(), '', '', '') -- put other values here (from parameters?) 

end 
+0

Sie nach 1 Minute auf Ihre eigene Frage beantwortet, da sie gefragt wurde? hmm ... riecht nach etwas falschem – anatol

0

Wenn Sie 1 Zeile custlogin einzufügen, Sie @@IDENTITY oder Scope_identity() nutzen könnten neue bekommen eingefügte ID

Wenn Sie mehrere Zeilen einfügen, verwenden Sie OUTPUT, um mehrere neue eingefügte IDs zu erhalten.

Sie ein Beispiel hier sehen konnte: http://rextester.com/TWXO81648

+0

Ich würde empfehlen, ** 'SCOPE_IDENTITY()' ** anstelle von irgendetwas anderem zu verwenden, um den neu eingefügten Identitätswert zu ergreifen. [Siehe diesen Blog-Beitrag für eine Erklärung zu WARUM] (http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vsident_current-retrieve-last-inserted-identity -of-record /) –

+0

Danke @marc_s, ..... – TriV

Verwandte Themen