Thomas: MySQL: kann "auto_increment" auch ab 0 zählen?

Hallo,

Kann man eine Spalte, die automatisch per "auto_increment" mitzählt auch ab 0 zählen lassen oder geht das nur ab 1? Scheinbar läßt sich Null nämlich nicht auf "Ja" stellen (mit phpMyAdmin).

Danke,
Thomas

  1. Hi,

    Kann man eine Spalte, die automatisch per "auto_increment" mitzählt auch ab 0 zählen lassen oder geht das nur ab 1?

    das ist vollkommen egal. Der Wert hat neben der Eindeutigkeit nicht die geringste Bedeutung - es könnten auch irgendwelche kryptischen Zeichenketten drin stehen. Es ist definitiv _falsch_ eine auto_increment-Spalte für irgendetwas anderes als die technische Identifizierung eines Datensatzes zu verwenden.

    Scheinbar läßt sich Null nämlich nicht auf "Ja" stellen (mit phpMyAdmin).

    0 != NULL

    Abgesehen davon macht eine auto_increment-Spalte, die auch NULL beinhalten kann, keinen Sinn. NULL heißt, dass dieser Wert beliebig oft vorkommen darf - und schon sind die Datensätze nicht mehr eindeutig identifizierbar.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hallo,

      ich möchte angemeldete Userdaten mit einer User-ID (auto_increment) speichern. In einer _anderen_ Tabelle würde ich dann diese User-ID eintragen, wenn es sich um einen angemeldeten (und eingeloggedten) User-Handelt, wenn nicht (also unbekannter User), würde ich an dieser Stelle gerne eine 0 eintragen.
      Deshalb würde mich interessieren, ob 0 in einer auto_increment-Spalte vorkommen kann.

      Thomas

      1. Hallo,
        Deshalb würde mich interessieren, ob 0 in einer auto_increment-Spalte vorkommen kann.

        Wohl nur, wenn du es bewußt setzt:

        "Der Initialwert des auto_increment-Feldes ist 1. Um diesen Wert zu ändern, muss man ihn explizit setzen:"

        siehe [ link:http://www.dclp-faq.de/q/q-mysql-inkrement.html ]

        Gruß, Kalle.

      2. Hi,

        In einer _anderen_ Tabelle würde ich dann diese User-ID eintragen, [oder] eine 0

        dann ist diese Spalte der anderen Tabelle _keine_ auto_increment-Spalte. Du solltest, wenn Du "kein Wert" ausdrücken willst, übrigens NULL wählen, nicht 0.

        Deshalb würde mich interessieren, ob 0 in einer auto_increment-Spalte vorkommen kann.

        Solange der Wert maximal ein Mal existiert, dürfte das kein Problem sein. Möglicherweise pfuscht Dir die DB aber dazwischen (zumindest beim INSERT). Es ist jedoch nicht empfehlenswert, diesen Mechanismus irgendwie zu beeinflussen - die Gefahren eines Fehlers sind zu groß, die Konsequenzen in jenem Fall unüberschaubar.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hallo,

          dann ist diese Spalte der anderen Tabelle _keine_ auto_increment-Spalte.

          ...ja!

          Du solltest, wenn Du "kein Wert" ausdrücken willst, übrigens NULL wählen, nicht 0.

          ...Du meinst die Einstellung der Spalte, oder?

          Wenn man sicher sein könnte, dass der erste User, der sich anmeldet eine 1 bekommt, wüsste man, dass z.B. ein Eintrag in der _anderen_ Tabelle (in einer nicht auto_increment-Spalte) von einem unbekannten User kommt, wenn dort eine 0 eingetragen wird.
          Ginge es so nicht, müsste ich extra eine weiter Spalte einbauen, in der gespeichert wird ob angemeldeter User oder nicht. Dies würde ich mir eben gern sparen.

          Thomas

          1. Hi,

            Du solltest, wenn Du "kein Wert" ausdrücken willst, übrigens NULL wählen, nicht 0.
            ...Du meinst die Einstellung der Spalte, oder?

            nein, ich meine die Werte. Wenn Du NULL-Werte in die Spalte schreiben willst, muss dies natürlich erlaubt sein - dazu ist dann die Einstellung da.

            Wenn man sicher sein könnte, dass der erste User, der sich anmeldet eine 1 bekommt, wüsste man, dass z.B. ein Eintrag in der _anderen_ Tabelle (in einer nicht auto_increment-Spalte) von einem unbekannten User kommt, wenn dort eine 0 eingetragen wird.

            Hm? Du hast in der anderen Tabelle eine Referenz auf die erste Tabelle, welche also dessen ID (den Wert der auto_increment-Spalte) bekommt; oder aber NULL, wenn es ein unbekannter User ist.

            Wobei ich sagen muss, dass ich nicht wirklich verstehe, was Du vorhast. Ein semantisches Hick-Hack mit 0 wenn... oder auch nicht... aber... und so weiter solltest Du aber _ganz_ dringend vermeiden :-)

            Cheatah

            --
            X-Will-Answer-Email: No