Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 4.1] Primärschlüssel erfragen ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 4.1] Primärschlüssel erfragen ?


 
erwin6330
08-11-2006, 10:34 
 
Hallo Leute,
bin neu in diesem Forum und in Sql noch nicht so fitt. Daher meine Frage, die für Euch, so hoffe ich, leicht zu lösen ist.

Folgende INSERT-Anweisung wird durchgeführt:

INSERT INTO `tab_kontakt`
( `primaer_kontakt` , `pk_firma_land` )
VALUES (NULL , '$index_firma');

Zur Erklärung: primaer_kontakt ist der Primär-Schlüssel der Tabelle, als auto-increment definiert und durch die Übergabe von NULL neu vergeben. Soweit alles klar.
Diesen eben vergebenen Primär-Schlüssel brauche ich nun aber als Fremd-Schlüssel in einer anderen Tabelle. Der Eintrag pk_firma_land kann mehrfach in der Tabelle vorkommen, ist also nicht eindeutig.
Nun meine Frage, wie erhalte ich den neu vergebenen Primär-Schlüssel möglichst schnell ?
Bitte um schnelle Hilfe, danke im voraus, ich zähle auch Euch,
Cu Erwin6330

 
Trashar
08-11-2006, 10:38 
 
in php sollte dir die funktion mysql_insert_id() helfen

mfg

 
erwin6330
08-11-2006, 10:42 
 
Ich habs doch gewusst,

Danke, genau das was ich gesucht habe, dürft wohl eine Rekordzeit für eine Antwort sein.

Danke Trashar, war spitze.

Cu Erwin6330

 
Trashar
08-11-2006, 10:44 
 
4 Minuten.. geht eigentlich dennoch danke für die blumen!

 
Shurakai
09-11-2006, 18:05 
 
Wenn du es in SQL-Verwenden willst, kannst du auch INSERT_ID() verwenden.

 
ghostgambler
09-11-2006, 18:34 
 
Original geschrieben von Shurakai
Wenn du es in SQL-Verwenden willst, kannst du auch INSERT_ID() verwenden.
Nein, die beiden Varianten sind nicht äquivalent.
mysql_insert_id() liefert die letzte ID des letzten INSERTs der aktuellen Session zurück, während INSERT_ID() die letzte ID des letzten INSERTs generell zurück gibt.
Das ist ein großer Unterschied!

 
goth
10-11-2006, 03:41 
 
Original geschrieben von ghostgambler
Nein, die beiden Varianten sind nicht äquivalent.
mysql_insert_id() liefert die letzte ID des letzten INSERTs der aktuellen Session zurück, während INSERT_ID() die letzte ID des letzten INSERTs generell zurück gibt.
Das ist ein großer Unterschied!

Und das hast Du wo gelesen?!?! ... In Deiner Glaskugel?!?!

Mein MySQL 5.0.24 gibt den Wert Session abhängig wieder ... !

 
ghostgambler
10-11-2006, 10:28 
 
Original geschrieben von goth
Und das hast Du wo gelesen?!?! ... In Deiner Glaskugel?!?!
Ne, in meinem Fernseher

Hm ... hast recht, hatte mich da auf closure verlassen, weil der meinte dass man eine Transaktion bräuchte um die ID der aktuellen Connection zurück zu kriegen.
Entweder weicht MySQL da (mal wieder) vom Standard ab, oder closure hat sich geirrt *zucks*
http://dev.mysql.com/doc/refman/5.1/en/information-functions.html
The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:57 Uhr.