phpbar.de logo

Mailinglisten-Archive

[php] MS SQL, ADO DB via COM und der Kampf gegen @@IDENTITY

[php] MS SQL, ADO DB via COM und der Kampf gegen @@IDENTITY

Ron Opitz ron.opitz at dts.de
Fre Apr 30 17:30:20 CEST 2004


Am Freitag, 30. April 2004 15:48 schrieb Thorsten Koch:

>
> Nun setzen wir ein Query ab, welches gleichzeitig mehrere Inserts und
> Updates macht, am Ende wollen wir aber die ID eines bestimmten Inserts
> zurückbekommen (Beispiel):
>
> $query="insert into T_x_User (Name, Vorname) VALUES (N'Koch',
> N'Thorsten'); declare @draftID int; SET @draftID = @@IDENTITY; insert
> into T_x_Adress (UserID, Street, City) values (@@IDENTITY,
> 'Vaihingerstr.', 'Stuttgart'); select @draftID as Newid;";
>
>
> Was wir als Recordset zurückbekommen wollen ist also eine Zelle, in der
> die ID steht, die beim ersten INSERT entstanden ist. Leider liefert die
> Funktion überhaupt nichts zurück, das Recordset ist schon geschlossen.
>
Hi,

wir hatten mal genau das gleiche Problem, dass die @@IDENTITY Dinge nicht 
funktionierten.

Versuche mal diese query vor dem Insert und nutze das Ergebnis dann in der 
Insert Query. Anschließend kannst du mit diesem Wert auch weitere Inserts 
machen die auf dann darauf referenzieren.

$query = "select id = newid()";
...
$id = result();

$query="insert into T_x_User (ID, Name, Vorname) VALUES ($id, N'Koch', 
N'Thorsten')";

Gruß 

-- 
Ron Opitz
Internet Services
DTS Herford
05221-101-1306
ron.opitz at dts.de

php::bar PHP Wiki   -   Listenarchive