Sponsored Links |
|
|||
Zitat:
Und was heißt, dass Du damit offline arbeiten willst?
__________________
... Meine Meinung Geändert von xm22 (03.08.2009 um 15:54 Uhr) |
Sponsored Links |
|
||||
Hab ich dich richtig verstanden? Du brauchst die ID, bevor du die Sachen in die DB einträgst? Du könntest doch einen neuen "Blind"-Datensatz anlegen, nimmst dafür die ID und änderst dann einfach die Einträge für diese ID.
Code:
INSERT INTO Kunde('name') VALUE('John Doe'); http://blog.innerlogic.gr/mysql-get-...crement-value/ (Hab ich auch grad nur ergooglet. Keine Ahnung, ob das wirklich so funktioniert.) Geändert von David (03.08.2009 um 15:56 Uhr) |
|
||||
Wie wärs mit nem simplen SELECT MAX(id) AS aktuellsteid FROM tabelle ... ^^
Zitat:
__________________
“My software never has bugs. It just develops random features ...” » DevShack - die Website des freien Webentwicklers Boris Bojic |
|
||||
Der Kunde will (aus welchem Grund auch immer) zu der Kundennummer Akten anlegen bei der immer die Kundennummer auf dem Index angegeben wird. Dafür braucht er natürlich dann die ID von der Kundenverwaltung und desalb brauche ich die vorher.
Die Lösung von David mit SHOW TABLE STATUS funktioniert. Folgende Syntax führt zum Ergibniss: PHP-Code:
@xm22: Weil ich damit immer die letzte in der Datenbank stehende ID abrufe. Lösche ich aber den letzten Datensatz, so löscht er auch die letzte ID. Diese wird von auto_increment aber nicht nochmal eingefügt, sondern dann "übersprungen"
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade! |
|
||||
Zitat:
__________________
“My software never has bugs. It just develops random features ...” » DevShack - die Website des freien Webentwicklers Boris Bojic |
|
|||
Ich verstehe nicht den Zusammenhang Deiner Kundentabelle und den Akten.
Ich befürchte Folgendes (Kann aber sein, dass ich nur dein Problem nicht durchschaue ): Jemand will irgendwas mit einer neuen ID anlegen (Die Du jetzt über den Auto_increment-Wert ausliest.) Derjenige fängt also an, da rumzumehren. Jetzt kommt ein anderer, der das gleiche tun will. Dieser Zweite ist aber schneller fertig als der Erste und speichert jetzt seine Daten. Nun ist der Erste fertig und will seine Daten ebenfalls unter der vorher geholten ID speichern. Das geht aber nicht mehr, weil der Zweite die schon benutzt hat.
__________________
... Meine Meinung |
|
|||
Edit: da war ich wohl zu langsam
Was machst Du denn, wenn 2 Kunden Parallel (von 2 Mitarbeiten) angelegt werden ? Also: Mitarbeiter 1 holt sich aus dem System die nächste freie Kunden-ID (123) Mitarbeiter 2 holt sich aus dem System die nächste freie Kunden-ID (124) Mitarbeiter 2 legt nun den Datensatz fest an (123) Mitarbeiter 1 legt nun den Datensatz fest an (124) Dann sind die beiden Kunden-ID´s vertauscht. Wenn Du schon die Auto-Increment-Funktion der DB nutzen willst, dann solltest Du das auch konsequent der DB überlassen. Also: Datensatz anlegen, Insert-ID ermitteln (z.B. mit last_insert_id) und dann die ID an den Akten-Menschen rausgeben damit der die auf dem Index eintragen kann. Übrigens: die SHOW TABLE STATUS-Funktion ist zwar eine verlässliche Methode um die nächste ID zu ermitteln (was nicht heißt, dass man diese Funktion nutzen sollte), allerdings ist eine gute Technik in Verwaltungssystemen keine Datensätze zu löschen. Man setzt bei einem Datensatz eher ein "Gelöscht-Flag" und belässt die Daten sonst wie sie sind. Das ist zwar aufwendiger, da dieses Flag überall berücksichtigt werden muß, aber dafür gehen keine Daten verloren. Ist z.B. wichtig wenn der Steuerprüfer ins Haus kommt - was sagt der wohl wenn ein paar Zeilen in der DB fehlen ? Wenn keine Zeilen gelöscht, sondern nur als gelöscht markiert werden, würde auch die Methode "SELECT MAX(id) AS aktuellsteid FROM tabelle" funktionieren - aber eine schönere Technik wird das ganze dadurch trotzdem noch nicht. |
|
||||
Die Datenbank ist neu, es gibt kein bestehendes Konzept. Was meinst du mit du mit "nicht gut durchdacht"? Ich bin für Änderungsvorschläge gerne offen
Datensätze werden nur gelöscht, wenn der Chef sein ok gibt. Davon gibt es normalerweise nur einen und wenn die Datensätze gelöscht werden haben diese dann keine weiteren Informationen, wie z.B. Rechnungen anhängen oder sowas. Das geht nicht. Rechnungen werden auch in einer anderen Tabelle verwaltet diese werden sowieso nicht gelöscht und sind gesondern (unabhängig von Kunden) abrufbar. Schön ist die Technik wirklich nicht, ich werde es nocheinmal berdenken, da bin ich aber schon bei, weil ich mir den geäußersten Zweifeln schon bewusst bin. Ich denke ich nehmen soetwas wie "mögliche ID" und nach der Anlegung "tatichliche ID"
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade! |
Sponsored Links |
Stichwörter |
letzte eingefügte id, mysql, php |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
MySQL Events automatisch starten | Todeshügel | Serveradministration und serverseitige Scripte | 1 | 07.11.2010 19:16 |
Alternativen zur Nutzung von (My)SQL? | domsson | Serveradministration und serverseitige Scripte | 4 | 06.04.2008 22:06 |
Ernsthafte Fragen zu MySQL und seiner Indizierung | KartoffelKiffer | Serveradministration und serverseitige Scripte | 2 | 26.01.2008 00:36 |
MySQL Query - online ok, lokal kein Ergebnis? | Boris | Serveradministration und serverseitige Scripte | 6 | 04.09.2007 23:51 |
MySQL Service deinstallieren | NEOX | Serveradministration und serverseitige Scripte | 1 | 28.08.2006 19:55 |