[PostgreSQL] random id erstellen, mit zahlen und buchstaben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [PostgreSQL] random id erstellen, mit zahlen und buchstaben

    hi

    ich möchte gerne anstatt einer ständig fortlaufenden id, eine zufällige id erhalten,mit buchstaben und zahlen.

    also anstatt

    0001 -> a7jdj394hfl
    0002 -> kkd8k4jahl0
    0003 -> 3hdasvl0d94
    0004 -> 0lks64myx23

    so ähnlich. grund ist, das die ids ja zb bei links zum vorschein kommen und ich finde das es schöner aussieht wenn immer so ein random key dasteht, als eine fortlaufende nummer.

    wenn man mal was löscht, dann fehlt zwischendrin eine nummer usw. also nur rein optisch gesehen...

    desweiteren kann man mit einem solchen random key nicht auf eventuell andere existierende keys schließen. bei fortlaufenden ids ist das anders. wenn es eine 0002 gibt, dann muss es auch eine 0001 geben, und der user kann dann den link manipulieren

    ich hab es mir so gedacht.

    Code:
    create table TABELLE1
    (
     id varchar(10) default rand()
    )
    ich weis aber nicht wie ich mit rand() einen key mit zahlen und buchstaben bekomme. kann mir da einer von euch helfen? bei ausreichender länge ist die gefahr, das es zu doppelten einträgen kommt, ja auch eigentlich zu vernachlässigen

    dankeschön

  • #2
    Ich diskutiere nicht über den Sinn, was du machst. Jeder mach irgendwann mal selbst seine Erfahrung! Was hälst du von PHP-MD5? Etwa so:
    PHP-Code:
    $sql "INSERT INTO tbl (id, sName) VALUES ('".md5(time())."','".$uname."')"
    und definiere die Spalte id UNIQUE. Dann hast du mit Sicherheit keine DoppelId

    Kommentar


    • #3
      danke. an md5 hab ich auch schon gedacht. ich bin allerdings grad auf ein feature von postgresql gestoßen

      UUID

      sagt das jemandem was? also irgendwie kann man damit genau sowas erstellen, aber ich weis nicht wirklich wie ich es einsetzen soll

      http://www.postgresql.org/docs/8.3/i...uuid-ossp.html
      Zuletzt geändert von sql_newbie_67; 19.11.2008, 22:06.

      Kommentar


      • #4
        UUID = Universally Unique Identifiers

        PostgreSQL kann selbst aber kein erzeugen, du musst selbst dafür sorgen. MS-SQL kann das aber selbst, wenn man Spaltentyp als GUID festlegt

        Nimmt den MD5, das ist im Prinzip fast das gleiche.

        Kommentar


        • #5
          schade eigentlich das das pgsql nicht kann

          finde ich ein wichtiges feature

          Kommentar


          • #6
            In der Doku steht auch warum.
            Suche nach UUID, 2. Treffer.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              PostgreSQL provides storage and comparison functions for UUIDs, but the core database does not include any function for generating UUIDs, because no single algorithm is well suited for every application . The contrib module contrib/uuid-ossp provides functions that implement several standard algorithms. Alternatively, UUIDs could be generated by client applications or other libraries invoked through a server-side function.
              das hab ich auch gefunden, aber ich verstehe nicht wirklich was es bedeuten soll

              Kommentar


              • #8
                Kein Algorithmus passt für jede Applikation.
                Einige benötigen vllt. nur einen Zufallswert. Einige verteilte Systeme brauchen vllt. Präfixe. Bei einigen Dateien wird vielleicht der md5-Hash einer Datei genommen und man hat dann auch gleich eine Checksumme. Oder oder oder.

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  okay danke erstmal

                  Kommentar

                  Lädt...
                  X