Announcement

Collapse
No announcement yet.

Auto-Increment auf Feld mit Text+Zahl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auto-Increment auf Feld mit Text+Zahl

    Moin,

    ich habe mal eine bescheidene Frage. Ich habe eine Datenbank mit einer Tabelle wo das Feld ID vorhanden ist. Diese ID soll autom. bei neuen Einträgen hochgezählt werden. So weit so gut und auch kein Problem.

    Jetzt habe ich aber die Vorgabe bekommen das in dem Feld nicht nur eine Zahl (Integer) sondern auf noch eine Art Präfix mit eingetragen werden soll.

    Bsp.: ID = def1000

    Leider funktioniert dann die Geschichte mit dem AI nicht mehr, oder doch? Gibt es eine Möglichkeit das zu realisieren?

    Danke schonmal.
    Wo kämen wir denn hin,wenn alle sagen 'Wo kämen wir denn hin' und
    niemand ginge um zu sehen wohin wir kämen wenn wir gingen.

  • #2
    Wieso muss das denn in einer Spalte stehen? Kann man das nicht einfach auf zwei Spalten verteilen und es bei Bedarf im SQL Kommando oder im Programm wieder zusammenbauen?

    Comment


    • #3
      Eigentlich war es von mir ja so gedacht 2 Felder beim auslesen mit "CONCAT" zu verbinden. War für mich das logischste. Leider sehen das meine Vorgesetzten anders. es soll schon von vornherein zusammen in einem Feld liegen.
      Ich persönlich finde es nur dämlich wenn man bei einer Eintragserstellung sich selber eine ID aus den Fingern saugen muss. Aber eine andere Möglichkeit wirds wohl nicht geben, oder?
      Wo kämen wir denn hin,wenn alle sagen 'Wo kämen wir denn hin' und
      niemand ginge um zu sehen wohin wir kämen wenn wir gingen.

      Comment


      • #4
        Ist diese ID der Primary Key? Dann solltest du versuchen das zu verhindern.
        Die Best Practises zum Datenbankdesign werden dir üblicherweise einen Surrogatschlüssel(also einen Schlüsses der sich nicht aus den Businessdaten ableitet) empfehlen. Ein zusammengesetzter String ist als PK ausgesprochen hinderlich. Wenn eine solche ID zwingend erforderlich ist würde ich ebenfalls für 2 Felder plädieren. Eine identifizierenden Primary Key (zum Beispiel als Autoinkrement wie bei dir angedeutet) und zusätzlich die von dir angedeutete ID die du dann nach irgendwelchen Regeln frei belegen kannst.

        Comment


        • #5
          ja das wäre der Primary Key. Naja ich versuch das mit den 2 Feldern durchzusetzen.
          Aber mal rein technisch gesehen...
          Ist sowas überhaupt möglich?
          Wo kämen wir denn hin,wenn alle sagen 'Wo kämen wir denn hin' und
          niemand ginge um zu sehen wohin wir kämen wenn wir gingen.

          Comment


          • #6
            Aber mal rein technisch gesehen...
            Ist sowas überhaupt möglich?
            Das hängt ausschließlich von deiner programmiertechnischen Fähigkeiten ab

            Aber mal ernsthaft. Eine relativ einfache datenbankbasierte Lösung ginge nur wenn mySQL mittlerweile Sequences bzw. Generatoren unterstützen würde. So bleibt dir nur Handarbeit.

            Comment


            • #7
              okay. also müsste ich das dann über meinen Quellcode realisieren...
              Naja ich bin bei meinen Chefs noch am baggern zwecks der 2 Felder die ich dann mit CONCAT beim auslesen verbinde. ;-)

              Danke für die Hilfe.
              Wo kämen wir denn hin,wenn alle sagen 'Wo kämen wir denn hin' und
              niemand ginge um zu sehen wohin wir kämen wenn wir gingen.

              Comment


              • #8
                Originally posted by EndNic View Post
                okay. also müsste ich das dann über meinen Quellcode realisieren...
                Naja ich bin bei meinen Chefs noch am baggern zwecks der 2 Felder die ich dann mit CONCAT beim auslesen verbinde. ;-)

                Danke für die Hilfe.
                Rein für Lesezwecke kannst Du Dir ja auch einen View bauen. Dann musst Du nicht überall das CONCAT in deine SQL Befehle einbauen. Das hängt dann allerdings vom konkreten Problem ab, welchen Weg man geht.

                Comment

                Working...
                X