Insert statement ID zurückgebenlassen

Insert statement ID zurückgebenlassen

am 12.10.2006 19:30:55 von Jan Meier

Hallo,

ich habe eine Tabelle da befindet sich eine Spalte die vom typ
"int not null auto_increment" ist.

Nun mache ich ein Insert-Statement:

INSERT INTO blah VALUES (0,...);

Gibt es eine Möglichkeit die dadurch automatisch generierte ID sich
zurückgeben zu lassen? Zurzeit mache ich das mit einer Zweiten query:

SELECT id FROM blah WHERE ...

Ist dies die beste Möglichkeit oder gibt es da noch etwas besseres?

Gruß
Jan

Re: Insert statement ID zurückgebenlassen

am 12.10.2006 20:21:11 von Axel Schwenke

Jan Meier wrote:
>
> ich habe eine Tabelle da befindet sich eine Spalte die vom typ
> "int not null auto_increment" ist.
>
> Nun mache ich ein Insert-Statement:
>
> INSERT INTO blah VALUES (0,...);

Mööp. Wenn du einen Wert per AUTO_INCREMENT generieren willst, übergib
den Wert NULL oder laß die Spalte in der Spaltenliste gleich weg.

Es ist allgemein empfohlen, INSERTs mit Spaltenliste zu schreiben:
INSERT INTO

() VALUES ()

Dadurch vermeidest du unbemerkte Fehler, wenn sich deine Tabellen mal
ändern und du vergißt die INSERTs anzupassen.

> Gibt es eine Möglichkeit die dadurch automatisch generierte ID sich
> zurückgeben zu lassen?

LAST_INSERT_ID()
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.htm l


XL

Re: Insert statement ID zurückgebenlassen

am 12.10.2006 20:29:24 von ascii158

Jan Meier schrieb:
> Gibt es eine Möglichkeit die dadurch automatisch generierte ID sich
> zurückgeben zu lassen? Zurzeit mache ich das mit einer Zweiten query:
>
> SELECT id FROM blah WHERE ...
>
> Ist dies die beste Möglichkeit oder gibt es da noch etwas besseres?

Ja.

Grüße,
--
Philipp Tölke
PGP: 0x96A1FE7A

Re: Insert statement ID zurückgebenlassen

am 13.10.2006 01:31:46 von Jan Meier

Axel Schwenke wrote:

> Jan Meier wrote:
>>
>> ich habe eine Tabelle da befindet sich eine Spalte die vom typ
>> "int not null auto_increment" ist.
>>
>> Nun mache ich ein Insert-Statement:
>>
>> INSERT INTO blah VALUES (0,...);
>
> Mööp. Wenn du einen Wert per AUTO_INCREMENT generieren willst, übergib
> den Wert NULL oder laß die Spalte in der Spaltenliste gleich weg.
>
> Es ist allgemein empfohlen, INSERTs mit Spaltenliste zu schreiben:
> INSERT INTO

() VALUES ()

Okay, werde ich in Zukunft so machen, danke für den Tip.

> Dadurch vermeidest du unbemerkte Fehler, wenn sich deine Tabellen mal
> ändern und du vergißt die INSERTs anzupassen.
>
>> Gibt es eine Möglichkeit die dadurch automatisch generierte ID sich
>> zurückgeben zu lassen?
>
> LAST_INSERT_ID()
> http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.htm l


Ja danke, das hat geholfen. :)

Gruß
Jan