• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

uniqid contra auto_incr / sequence

Guido

New member
Hallo zusammen!

Lohnt sich die Anwendung von uniqid() anstatt auto_increment, bzw. einer sequence?

Wie einige vielleicht mitbekommen haben portiere ich eine MySQl-Anwendung derzeit auf Oracle, bzw. benutze die PHPLIB zum switchen.

IMHO liegt der Vorteil von uniqid darin, dass ich keine zwei Versionen der SQL-Statements schreiben müsste - am I right?

Noch kann ich es mir leisten alle Tabelle mit eindeutiger ID (durch auto_increment, bzw. eine Sequenz) und die dazugehörigen Skripte umzuschreiben; wenn erstmal mehr Daten drin sind ist das vorbei! Da streiken auch stud. Hilfskräfte wenn sie alles nochmal eingeben müssen!

Ich bin einfach unsicher, ob ich mit einer per md5(uniqid($voll_geheim)) die volle Funktionalität erhalten kann.

Ade
Guido

P.S.: Da hab ich was angefangen... :confused:
 
Wenn Du mal in die PHPLib reinschaust, speziell in die Dateien db_oracle.inc und db_mysql.inc, wirst Du eine Funktion nextid () finden, die eine eindeutige ID für eine Tabelle erzeugen kann. Wie macht sie das? Ganz einfach sie benutzt bei mysql eine zusätzliche Tabelle, die für jede Tabelle den zuletzt vergebenen Wert enthält, und für Oracle benutzt sie die eingebaute Funktionalität mit SELECT tabelle.NEXTVAL FROM DUAL und CREATE SEQUENCE.... also alles ganz easy ;)
 
:cool: Da hätte ich doch besser nachschauen sollen !

Bevor ich jetzt noch 10 Threads starte...
kannst du nicht die zehn von dir meistgenutzen Funktionen der PHPLIB - die NICHT in der FAQ stehen - posten? *anfleh*

Ade
Guido
 
da gibts 'n FAQ??? ;)

Also ich verwende am häufigsten die DB Geschichten, das Session Management und die Formularklassen.
Bei den Formularen finde ich ziemlich gut, daß man A) nicht mehr den direkten HTML Code eingeben muß für die einzelnen Felder, sondern man definiert nur noch die Feldtypen, deren Inhalte und Vorbelegungen und B) bei den Vorbelegungen muß ich nicht tausende von if's für jedes Feld machen, um zu überprüfen, hab ich eine Vorbelegung, kommt sie aus der Datenbank, oder ist der User wegen eines Fehlers wieder zurückgeschickt worden und darf seine Eingaben nochmal bearbeiten....
Die Tree Klasse verwende ich auch ab und zu, allerdings ein wenig optisch aufgebessert... ;)

Templates habe ich noch nicht eingesetzt, was aber an meiner Faulheit lag, mich da rein zuarbeiten. Beim nächsten Projekt werde ich die definitiv einsetzten, weil das auch mit Mehrsprachigkeit zu tun hat und da will ich ned alles in x Versionen ablegen.... einfach Template über die DB austauschen und schon ist das ganze in Serbokratisch oder Südchinesisch oder was auch immer....
 
da gibts 'n FAQ???
Nö! :D

Ich dachte eher daran, dass du solche Sahen wie next_id() erwähnst, aber ich kann mich auch nochmal auf die Suche machen... :rolleyes:;)

Formulare habe ich noch nicht drin.
Da benutz ich immer noch meine eigenen Funktionen, aber mal sehen was die lib so bietet!

Sorry, hab mich noch gar nicht bedankt bei Dir! Vielen Dank für deine Hilfe soweit! Weiter so!

Ade
Guido
 
Hello again!
:confused: :confused: :confused: :confused: :confused:
Mag an meiner Unkenntnis von Oracle liegen... Jetzt hat Verwirrung eingesetzt! Vielleicht sollte ich nochmal drüber schlafen, aber ob ich das kann??? ;) Ich kann also nur insgesamt fortlaufende IDs verteilen? Keine für schueler, lehrer kurse, räume getrennt? Ist zwar nicht ganz so schlimm, eine ID ist eine ID, aber schon komisch irgendwie! Oder warte mal...
MySQL-Tabelle:
spalte1 = seq_name, spalte2 = nextid
row1/1 = schueler, row1/2 = $nextid
row2/1 = lehrer, row2/2 = $nextid
row3/1 = ...
nextid(schueler) gibt mir die ID für Schüler?

Ne, das löst mein Oracle-Prob auch nicht! Wie dann in Oracle ??? Meine bisherige Tabellenstruktur ist so gestrickt, dass ich in jeder einzelnen Tabelle eine ID vergebe. Wie teile ich Oracle mit, dass er Tabelle schueler benutzen soll um dort die schueler_id zu erhöhen? Och sch..... Oder sucht ORacle sich selber die Tabelle, die es benutzen soll ?
Ich kann derzeit unter oci8i nix testen, da das CMS der UNi völlig den Geist aufgegeben hat und ich den SSH-Zugang noch nicht habe :( SysAdmi: "Morgen! Ich mails dir!" :( Und nächsten Monat solls schon oci9i geben... na dann... Vielleicht sollte ich jetzt schon ins Bett gehen, dann brauch ich - hoffentlich - nicht mehr drüber nachzudenken!

Gute Nacht
Guido

edit: dummzeug geändert
 
Zuletzt bearbeitet:
Also die mysql Variante von nextid basiert auf einer Tabelle mit zwei Spalten seq_name und nextid.... hast Du soweit schon erkannt. In jeder Zeile speichert er sich den zuletzt vergebenen Wert einer Tabelle (seq_name, z.B. "schueler"). Wird also mit nextid ("schueler"); eine neue ID angefordert, dann schaut er in die Zeile, zählt eins drauf, schreibt die Zeile und liefert den Wert zurück. Wenn nicht vorhanden, legt er sie an, zählt eins drauf und liefert 1 zurück für den ersten Wert.....
Die Oracle Version von nextid macht das anders. Da gibt es schon von Oracle eine (native) Tabelle Namens "DUAL", die sowas schon automatisch macht. Mit CREATE SEQUENCE kann man eine neue Sequenz (== Autowert) anlegen und ihr einen Namen geben (z.B. "schueler"). nextid ("schueler"); mach also auch hier, daß was Du willst.... Schau Dir einfach den Quelltext an ... ;)

Was Du also brauchst ist also für mySQL eine eigene Tabelle, die in Dein DB Skript mit eingebaut werden muß, die Du persönlich anlegen mußt, und für Oracle gar nix. ;)

(Soweit die Theorie, hab grad kein Oracle da, um das zu testen, der mySQL Part funzt bei mir wunderbar...)
 
Jetzt kann ich beruhigt schlafen gehen!
Mal sehen was der morgige Tag bringt!

SUPER! Super Moderator!
 
Ich brauch jetzt erstmal Wochenende!
Den ganzen Morgen hab ich inner Uni verbracht und rausgekommen ist immer noch nix. Naja, wenigstens hab ich jetzt alle Rechte und kann am Montag richtig loslegen!
Schönes Wochenend!

edit:
Ach ja, mit mySQL funzt es prima!
SQLPlus ist scheisse!
 
Zurück
Oben