SQLite und auto_increment

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

  • SQLite und auto_increment

    Ich besachäftige mich nun seitm Wochenende mit SQLite und finde es sehr interessant. Hatte anfangs Probleme mit so manchen Sachen aber nun gehts eigentlich. Nur das auto_increment stört mich noch ein wenig. In den FAQs von sqlite.org hab ich gelesen wie ich aotu_increment hinbekomme aber das will ned so wirklich. So sieht nun meine Tabelle aus (ist nur zum Testen!!!)


    Code:
    CREATE TABLE user (
    ID INT ( 16 ) PRIMARY KEY ,
    name VARCHAR ( 100 ) ,
    pass VARCHAR ( 32 ) ,
    email VARCHAR ( 100 )
    );
    nur wenn ich nun


    Code:
    INSERT INTO user (ID, name, pass, email) VALUES (NULL, 'Jan', md5(123465), 'name@provider.tld')
    oder


    Code:
    INSERT INTO user (ID, name, pass, email) VALUES ('', 'Jan', md5(123465), 'name@provider.tld')
    oder


    Code:
    INSERT INTO user (NULL, 'Jan', md5(123465), 'name@provider.tld')
    oder


    Code:
    INSERT INTO user ('', 'Jan', md5(123465), 'name@provider.tld')
    hab ich immer NULL in dem ID Feld stehen, statt die ID. Wie mach ich dasn nu, dass jeder Eintrag ne ID bekommt?
    Admin of RealScripts

  • #2
    Re: SQLite und auto_increment

    Original geschrieben von freq.9

    Code:
    CREATE TABLE user (
    ID INT ( 16 ) PRIMARY KEY ,
    name VARCHAR ( 100 ) ,
    pass VARCHAR ( 32 ) ,
    email VARCHAR ( 100 )
    );
    und wo steht denn dass ID auto_increment sein soll

    Kommentar


    • #3
      In der Man oder auch in den FAQ steht, dass, wenn ein Feld mit Primary Key deklariert wird, automatisch auto_increment ist!

      Auszug aus den FAQ:
      1) How do I create an AUTOINCREMENT field.

      Short answer: A column declared INTEGER PRIMARY KEY will autoincrement.
      Link: http://sqlite.org/faq.html#q1
      Admin of RealScripts

      Kommentar


      • #4
        was macht:
        INSERT INTO user ( name, pass, email) VALUES ( 'Jan', md5(123465), 'name@provider.tld')
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Original geschrieben von MelloPie
          was macht:
          INSERT INTO user ( name, pass, email) VALUES ( 'Jan', md5(123465), 'name@provider.tld')
          Wenn du nen Anfänger bist:
          - nen Eintrag in die DB

          Wenn du kein Anfänger bist:
          - NULL in die ID Spalte einfügen
          Admin of RealScripts

          Kommentar


          • #6
            hab mich noch nie mit sqllite auseinander gesetzt. War nur ne Frage nach der BEschreibung sollte ein NULL WERT eben einen ID wert eintragen...
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              allerdings is in der beschreibung die länge des integer felds nicht mit angegeben wie in deinem create statement
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Original geschrieben von MelloPie
                allerdings is in der beschreibung die länge des integer felds nicht mit angegeben wie in deinem create statement
                das mit der Länge hab ich später geaddet als ich mitbekommen hab, dass es geht!

                // Edit:
                sollte das was an den Einträge ändern?
                Zuletzt geändert von freq.9; 29.07.2004, 22:57.
                Admin of RealScripts

                Kommentar


                • #9
                  Wie gesagt noch nie mit sqllite gearbeitet aber das is der einzige Unterschied zwischen Deiner deklaration und der aus dem manual...
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Ich bezweifle noch immer, dass php das erkennt...

                    Ich hab mir mal manuell nen auto_increment gebastelt, nur kann ich dass nun nicht in meiner Klasse nutzen :!

                    PHP-Code:
                    <?php

                    $link 
                    sqlite_open('freq9.db');

                    /*$sql = "CREATE TABLE guestbook (
                      ID INTEGER PRIMARY KEY,
                      name VARCHAR,
                      email VARCHAR,
                      eintrag TEXT
                    );";

                    if(sqlite_query($sql, $link))
                    {
                        echo "Tabelle erstellt.";
                    }
                    else
                    {
                        echo "Es gab Fehler.";
                    }*/

                    $result sqlite_query("SELECT COUNT(*) AS Anzahl FROM guestbook"$link);
                    $row sqlite_fetch_array($result);
                    if(
                    $row['Anzahl'] == 0)
                    {
                        
                    $sql "INSERT INTO guestbook (ID, name, email, eintrag) VALUES (1, 'Jan Pieper', 'webmaster@realscripts.de', 'hallo ^^')";
                    }
                    else
                    {
                        
                    $result sqlite_query("SELECT ID FROM guestbook ORDER BY ID DESC"$link);
                        
                    $row sqlite_fetch_array($result);
                        
                    $sql "INSERT INTO guestbook (ID, name, email, eintrag) VALUES (".((int)$row['ID']+1).", 'Jan Pieper', 'webmaster@realscripts.de', 'hallo ^^')";
                    }

                    if(
                    sqlite_query($sql$link))
                    {
                        echo 
                    "Eintrag erfolgreich<br />\n<br />\n".$sql;
                    }
                    else
                    {
                        echo 
                    "Eintrag erfolgreich<br />\n<br />\n".$sql;
                    }

                    ?>
                    Admin of RealScripts

                    Kommentar


                    • #11
                      Hast Du es mal damit getestet ?

                      INSERT INTO guestbook VALUES( (SELECT max(ID) FROM guestbook )+1, ... );

                      Normal sollte es aber schon damit gehen:
                      ID INTEGER PRIMARY KEY
                      INSERT INTO guestbook VALUES ( NULL , ... );

                      Evtl, das Feld ID nochmal umbenennen, vielleicht mag er das nicht.

                      Gruß GriZZ

                      Kommentar


                      • #12
                        Ja es wird gehen, doch glaube ich eher, dass PHP da stresst. Weil die Leutz von sqlie.org etc. scheinen nicht mit php zu arbeiten und wenn das an php liegt können die mir mit c++ etc. auch noch 1000 beispiele zeigen.
                        Admin of RealScripts

                        Kommentar

                        Lädt...
                        X