spalte für automatisch erzeugte laufende nummer

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

  • spalte für automatisch erzeugte laufende nummer

    hallo. peetjoff hier.
    ich find nirgends einen hinweis auf die lösung meines problems:

    ich möchte über ein php skript eine sql tabelle erzeugen, die unter anderem eine spalte 'laufende nummer' haben soll. für jeden ankommenden eintrag aus meinem formular soll nun in der dafür erzeugten zeile ein eintrag mit der nächsthöheren, noch nicht vergebenen nummer, in dieser spalte automatisch geschehen.

    ich nehme an, dass ich das durch eine entsprechende definition des typs der spalte im php erreiche. von welchem typ muss nun aber die spalte sein, wenn

    ...a) beim löschen einer zeile aus der tabelle die werte der laufenden nummern in den restlichen zeilen erhalten bleiben sollen...

    ...b) beim löschen einer zeile die werte der anderen laufenden nummern aktualisiert werden sollen, also nach der löschung keine zahl in der reihe der laufenden nummern fehlen soll?

    dake schon mal im voraus.

    mfg. peetjoff.

  • #2
    [MySQL 4.1] spalte für automatisch erzeugte laufende nummer

    hallo. peetjoff hier.
    ich find nirgends einen hinweis auf die lösung meines problems:

    ich möchte über ein php skript eine sql tabelle erzeugen, die unter anderem eine spalte 'laufende nummer' haben soll. für jeden ankommenden eintrag aus meinem formular soll nun in der dafür erzeugten zeile ein eintrag mit der nächsthöheren, noch nicht vergebenen nummer, in dieser spalte automatisch geschehen.

    ich nehme an, dass ich das durch eine entsprechende definition des typs der spalte im php erreiche. von welchem typ muss nun aber die spalte sein, wenn

    ...a) beim löschen einer zeile aus der tabelle die werte der laufenden nummern in den restlichen zeilen erhalten bleiben sollen...

    ...b) beim löschen einer zeile die werte der anderen laufenden nummern aktualisiert werden sollen, also nach der löschung keine zahl in der reihe der laufenden nummern fehlen soll?

    dake schon mal im voraus.

    mfg. peetjoff.

    Kommentar


    • #3
      a) INT und auto_icrement

      b) INT ohne auto_increment und Mehraufwand in PHP und evtll. Probleme später, aber das findest du, wenn du die Suche bemühst
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        eine Spalte mit automatisch erzeugte laufende Nummer kannst mit INT und AUTO_INCREMENT erreichen, s. http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html. Jedoch durch deine Bedingung in b) kannst du AUTO_INCREMENT wiederum nicht verwenden, sondern du mußt selbst handanlegen. Es ist aber sehr aufwendig.

        Kommentar


        • #5
          Besser du entscheidest dich für Auto Increment anstatt mit max(); zu hantieren......
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar


          • #6
            a) das Zauberwort heißt auto_increment - zumindest bei MySQL.
            b) läuft nur, indem du einen entsrpechenden Trigger definierst - und die sind in MySQL erst für Version 5 vorgesehen.
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              bitte Doppelposting unterlassen

              **zusammenführen**

              Kommentar


              • #8
                hi!

                wenn sich peetjoff auch nicht mehr gemeldet hat,
                denke ich, er hat was anderes gemeint, oder?

                Ich hab ich ein ähnliches problem.

                Ich möchte durch eine SELECT Abfrage eine laufende Nummer als Spalte ausgeben lassen, unabhängig davon, ob ich einen PS mit auto_increment habe.
                Nur die SELECT Anweisung soll mir den Index erzeugen.
                So etwas wie
                Code:
                SELECT INCREMENT() AS LN, id, item ORDER BY item
                und als Ausgabe:

                Code:
                LN    id    item
                ---------------------
                1      2    apfel
                2      4    banane
                3      8    birne
                3     18    zitrone
                Gibt es da eine Möglichkeit?
                fragen macht spass, denken nicht

                Kommentar


                • #9
                  Code:
                  SET @zaehler = 0;
                  
                  SELECT @zaehler := @zaehler + 1 increment, id, item 
                  FROM tabelle
                  Aber warum zählst du nicht einfach bei der Ausgabe?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Danke!

                    Ich brauchte eine SQL Abfrage, ohne PHP.
                    fragen macht spass, denken nicht

                    Kommentar


                    • #11
                      genau vor dem gleichem problem stehe ich jetzt auch

                      hab das ganze auch mit INT und auto_icrement gelöst und habe auch das problem das wenn ich einen eintrag lösche diese zahl dann fehlt. kennt niemand eine lösung wie man die spalte aktualiesieren lassen kann , so das wenn ich einen oder mehrere einträge lösche , dann keine lücken in der nummerierung entstehen ?

                      Kommentar


                      • #12
                        ok hat sich erledigt, hab es selber hinbekommen.

                        Kommentar


                        • #13
                          und wie hast du es gelöst, wenn ich fragen darf?

                          und habe ich die anfängliche frage wirklich so falsch verstanden?
                          hier gings doch gar nicht um auto_increment und INT, oder?

                          was mrhappines geschrieben hat, sieht mir da am ehesten als lösung aus. ich hab's noch nicht ausprobieren können.
                          fragen macht spass, denken nicht

                          Kommentar

                          Lädt...
                          X