Wenn ich den folgenden Befehl meinem Tisch in SQLite3 schaffen es nicht Autoinkrement ID auch nicht NUTZERNAME machen ein Primärschlüssel, wie ich mehrere Benutzer mit demselben Benutzernamen eingeben und es wird ihnen Eingang ohne Probleme .SQLite nicht automatisch erhöht wird
Befehl:
CREATE TABLE 'users' (
'id' INTEGER AUTO INCREMENT,
'username' TEXT NOT NULL,
'hash' TEXT,
PRIMARY KEY ('id', 'username')
);
Hier eine Ausgabe von einer Konsole ist, zu zeigen, was es tut, wie Sie können es mir sagen, lassen Sie den Benutzernamen Katze zweimal eingeben und einen Wert ID nicht zuweisen, wie es sollte haben nach Autoinkrement:
sqlite> CREATE TABLE 'users' ('id' INTEGER AUTO INCREMENT, 'username' TEXT NOT NULL, 'hash' TEXT, PRIMARY KEY ('id', 'username'));
sqlite> insert into users (username, hash) values ('cat', 'dog2');
sqlite> insert into users (username, hash) values ('cat', 'dog2');
sqlite> select * from users;
id username hash
---------- ---------- ----------
cat dog2
cat dog2
Ich bin nicht sicher, wie SQLite Auto Inkrementieren Griffe, aber 'PRIMARY KEY (id, username)' sollte genau das bedeuten, die ID und Benutzernamen machen zusammen die PK; Wenn Sie möchten, dass der Benutzername eindeutig ist, benötigen Sie eine separate UNIQUE-Einschränkung/Schlüssel für genau dieses Feld. – Uueerdo