Forum: PC-Programmierung Zugriff auf MySql Datenbank - kann die autoincrementid beim erstellen eines Tabelleneintrags


von emi (Gast)


Lesenswert?

Wie ihr wisst versuche ich gerade ein Forum zu schreiben, jedoch ist das 
gar nicht so einfach wie man vielleicht denken mag. Mich plagt zur Zeit 
das Problem des gleichzeitigen Schreiben eines Beitrags.

Wie ist es mir überhaupt möglich wenn zwei kurzzeitig hintereinander 
einen Beitrag schreiben und das eine skript braucht aus irgendeinem 
Grund länger die den Beitrag zu identifizieren? WIe ist es mir dann zB 
möglich herauszufinden welcher Beitrag mit welcher id das jetzt in der 
Tabelle war?

Ich habe es mir durchgedacht, es ist unmöglich es herauszufinden wenn 
man vom allgemeinen Fall ausgeht, denn schreibt ein User einen Eintrag, 
so wird eine nächsthöhere Id angelegt, möchte ich diese einlesen, zum 
Beispiel durch getMaxid() welche die momentane Maximale id heraussucht, 
dann könnte schon wer anderer auch einen Beitrag geschrieben habe und 
ich bekomme eine verfälschte Id.

Gibt es denn keine Möglichkeit die Id (welche ja autoinkrementiert) 
gleich beim schreiben eines Eintrags von der Tabelle zurückzugeben? Das 
würde alle meine Probleme auf Anhieb lösen.

Sprich ich schreibe einen Eintrag in der Tabelle und die 
Schreiboperation gibt mir ein Feedback mit welcher Id dieser Beitrag 
geschrieben wurde...

Geht das?

von David .. (volatile)


Lesenswert?

emi schrieb:
> Geht das?

Ja
http://viralpatel.net/blogs/get-autoincrement-value-after-insert-query-in-mysql/
Du koenntest auch googlen, zB mit 'mysql get auto_increment value after 
insert'

von bluppdidupp (Gast)


Lesenswert?

Ein anderer Ansatz ist: Direkt GUIDs als Primary-Key verwenden statt 
aufsteigender IDs. Dann ist der Primary-Key quasi schon vor dem Einfügen 
bekannt:
http://stackoverflow.com/questions/45399/advantages-and-disadvantages-of-guid-uuid-database-keys

von asdf (Gast)


Lesenswert?

Guck dir die Lock mechanismen an- das erschlägt dein Problem

von Nase (Gast)


Lesenswert?

LAST_INSERT_ID()

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.