Ich versuche, eine Tabelle mit einer automatischen Inkrementierung primary key
in Sqlite3 zu erstellen . Ich bin mir nicht sicher, ob dies wirklich möglich ist, aber ich hoffe, nur die anderen Bereiche benennen zu müssen.
Beispielsweise:
CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));
Wenn ich dann einen Wert hinzufügte, hatte ich gehofft, nur Folgendes tun zu müssen:
INSERT INTO people
VALUES ("John", "Smith");
Ist das überhaupt möglich?
Ich laufe sqlite3
unter cygwin
Windows 7.
select rowid from people;
Ja, das ist möglich. Laut den SQLite-FAQ :
quelle
Stand heute - Juni 2018
Hier ist, was die offizielle SQLite-Dokumentation zu diesem Thema zu sagen hat (fett und kursiv sind meine):
quelle
Hast du das gelesen Wie erstelle ich ein AUTOINCREMENT-Feld?
quelle
Man sollte kein
AUTOINCREMENT
Schlüsselwort in der Nähe angebenPRIMARY KEY
. Beispiel für das Erstellen eines Primärinkrementierungs-Primärschlüssels und das Einfügen von:wird geben:
quelle
Neben der Zeilen-ID können Sie ein eigenes Feld für die automatische Inkrementierung definieren, dies wird jedoch nicht empfohlen. Es ist immer eine bessere Lösung, wenn wir eine Rowid verwenden, die automatisch erhöht wird.
Lesen Sie hier für detaillierte Informationen.
quelle
SQLite AUTOINCREMENT ist ein Schlüsselwort, mit dem ein Wert eines Felds in der Tabelle automatisch erhöht wird. Wir können einen Feldwert mithilfe des Schlüsselworts AUTOINCREMENT automatisch erhöhen, wenn Sie eine Tabelle mit einem bestimmten Spaltennamen erstellen, um sie automatisch zu erhöhen.
Das Schlüsselwort AUTOINCREMENT kann nur mit dem Feld INTEGER verwendet werden. Syntax:
Die grundlegende Verwendung des Schlüsselworts AUTOINCREMENT lautet wie folgt:
Beispiel siehe unten: Betrachten Sie die zu erstellende COMPANY-Tabelle wie folgt:
Fügen Sie nun folgende Datensätze in die Tabelle TB_COMPANY_INFO ein:
Wählen Sie nun den Datensatz aus
quelle
Ich weiß, dass diese Antwort etwas spät ist.
Mein Zweck für diese Antwort ist, dass jeder darauf zurückgreifen kann, ob er jetzt oder in Zukunft mit SQLite auf diese Art von Herausforderung stößt und es ihm schwer fällt.
Wenn Sie nun auf Ihre Anfrage zurückblicken, sollte es ungefähr so sein.
Es funktioniert an meinem Ende. Wie so,
Nur für den Fall, dass Sie mit SQLite arbeiten, empfehle ich Ihnen, den DB Browser für SQLite zu testen . Funktioniert auch auf verschiedenen Plattformen.
quelle
Was Sie tun, ist korrekt, aber die korrekte Syntax für 'Auto Inkrement' sollte ohne Leerzeichen sein:
(Bitte beachten Sie auch, dass ich Ihre Varchars in Strings geändert habe. Das liegt daran, dass SQLite einen Varchar intern in einen String umwandelt. Warum also die Mühe machen?)
Dann sollte Ihre Einfügung so standardmäßig wie möglich in der SQL-Sprache sein:
Wenn Sie die ID weglassen, wird sie zwar automatisch erhöht und zugewiesen, aber ich persönlich bevorzuge es, mich nicht auf automatische Mechanismen zu verlassen, die sich in Zukunft ändern könnten.
Ein Hinweis zum automatischen Inkrementieren: Obwohl es, wie viele betonten, von SQLite-Leuten nicht empfohlen wird, mag ich die automatische Wiederverwendung von IDs gelöschter Datensätze nicht, wenn das automatische Inkrementieren nicht verwendet wird. Mit anderen Worten, ich mag es, dass die ID eines gelöschten Datensatzes nie wieder angezeigt wird.
HTH
quelle