patrick: Auto-Increment

Hallo

Wie definiere ich eine Spalte als Auto-Increment

und wie wende ich das dann an, wenn ich z.B. eine neue Zeile einfügen will?

  1. Hello,

    Wie definiere ich eine Spalte als Auto-Increment

    Für welche Datenbank?

    und wie wende ich das dann an, wenn ich z.B. eine neue Zeile einfügen will?

    Indem Du einfach einen neuen Satz einfügst. Das Feld mit dem Autoincrement-Wert wird dann von der DBE automatisch belegt, i.d.R. mit dem nächsten höheren Wert des höchsen bisher vorkommenen Wertes der Spalte, auch wenn der zugehörige Satz schon wieder gelöscht wurde.

    Spannend ist immer die Frage, was an den Gerenzen des Wertebereiches passiert, und ob das Incrementverhalten vom DBMS garantiert weird.

    Grüße

    Tom

    1. Indem Du einfach einen neuen Satz einfügst. Das Feld mit dem Autoincrement-Wert wird dann von der DBE automatisch belegt, i.d.R. mit dem nächsten höheren Wert des höchsen bisher vorkommenen Wertes der Spalte, auch wenn der zugehörige Satz schon wieder gelöscht wurde.

      Und wie mache ich das?

      Also soll ich dann einfach schreiben:

      Wir haben eine Datenbank: xxx mit (id Primärschlüssel auto_increment, name Char(20),email Char(30) usw.)

      INSERT INTO xxx Values(???,Name,Email...)

      Was muss ich dann für id reinschreiben? Muss ich das leer lassen?

      Ich benutzte mysql

      1. Hallo,

        INSERT INTO table (ID, NAME, EMAIL) Values(NULL,"Name","Email");

        oder

        INSERT INTO table set
        NAME='$name'
        EMAIL='$email';

        Wobei man tunlichst vorher
        $name = mysql_escape_string(stripslashes($_POST["name"]));
        $email = mysql_escape_string(stripslashes($_POST["email"];

        benutzen sollte, wenn die Daten aus einer externen Quelle stammen (POST) und magic_quotes_gpc=on ist.

        Wenn magic_quotes_gpc=off ist, reicht mysql_escape_string().

        Grüße

        Tom

      2. Hi!

        Und wie mache ich das?

        So wie es die Dokumentation der Datenbank beschreibt.

        Wir haben eine Datenbank: xxx mit (id Primärschlüssel auto_increment, name Char(20),email Char(30) usw.)

        INSERT INTO xxx Values(???,Name,Email...)

        Was muss ich dann für id reinschreiben? Muss ich das leer lassen?

        nix, wenn Du für eine Spalte das Attribut AUTO_INCREMENT definiert hast, wird bei jedem INSERT automatisch der bisher höchste Wert + 1 eingefügt.

        Ich benutzte mysql

        Aha. Dann kann ich Dir http://www.mysql.com/doc/de/index.html wärmstens empfehlen. Steht sehr viel drin!

        Unter anderem findest Du da: http://www.mysql.com/doc/de/CREATE_TABLE.html, suche da mal nach "AUTO_INCREMENT".

        Falls Du zufällig auch mit PHP arbeitest, siehe auch:
        http://www.dclp-faq.de/q/q-mysql-auto-increment.html
        http://www.dclp-faq.de/q/q-mysql-inkrement.html
        http://www.dclp-faq.de/q/q-sql-ids.html

        Grüße
        Andreas