2016-07-01 2 views
0

Wie kann man vor und nach dem Einfügen eindeutige ID aus Ausgabeklausel beim Einfügen?So erhalten Sie vor und nach dem Einfügen eindeutige ID aus Ausgabeklausel beim Einfügen

Zum Beispiel: Ich habe eine Tabelle mit dem Namen A, ich brauche einige der Datensätze kopieren über

insert into select statement

und ich brauche alte eindeutige ID und neue eindeutige ID zu erhalten, um eine temporäre Tabelle

OUTPUT Clause

mit

Das bedeutet, ich muss den Rückgabetyp vor dem Einführen der eindeutigen ID und nach inerter eindeutiger Kennung erhalten. Dafür habe ich versucht, unter Abfrage als

DECLARE @MyTableVar TABLE 
    ( 
    newid UNIQUEIDENTIFIER, 
    oldid UNIQUEIDENTIFIER 
); 
INSERT A (name, description) 
output inserted.guid, 
     d.guid 
INTO @MyTableVar 
SELECT name, description 
FROM A d 
WHERE deptID = 550; 
SELECT * 
FROM @MyTableVar 

Aber ich bin nicht in der Lage mit d.guid in Ausgang Klausel zu erhalten. Bitte korrigieren Sie mich, wenn es noch andere Möglichkeiten gibt, vor und nach dem Einfügen eine eindeutige ID als Ausgabe zu erhalten.

Antwort

0

können Sie verwenden

@@IDENTITY 

nach eindeutigem ID Einsatz als Ausgabe zu erhalten.

+0

er bittet nicht um Identität – TheGameiswar

+0

Ja, ich bin nicht erwartet, diese – arun

0

sollten Sie Spaltennamen verwenden, um von table.In Ihrem Fall, Sie Inserted.Guid verwenden, die Syntaxfehler werfen sollte

create table tt 
(
id varchar(300) default newid() 
) 

declare @t table 
(
id varchar(300) 
) 

insert into tt 
output inserted.* into @t 
default values 

select * from @t 
+0

Indem "Insert.Guid" konnte ich eine neue Guid einfügen. Aber ich konnte keine alte GUID-ID ("d.guid") bekommen, Grund dafür war, dass "d.guid" nicht unter dem Geltungsbereich der Ausgabeklausel war und ich keine Lösung mit dieser Antwort bekommen konnte. – arun