2017-05-01 12 views
0

SQLite3でテーブルを作成するときに、次のコマンドを使用してIDを自動増分したり、同じUSERNAMEを持つ複数のユーザーを入力できるようにUSERNAMEを主キーにしたり、 。sqliteが自動インクリメントしない

コマンド:あなたは私が二度ユーザ名の猫を入力してみましょうし、それが必要として、IDに値を代入していないことを言うことができるようにここで

CREATE TABLE 'users' (
    'id' INTEGER AUTO INCREMENT, 
    'username' TEXT NOT NULL, 
    'hash' TEXT, 
    PRIMARY KEY ('id', 'username') 
); 

は、それが何をしているかを示すためのコンソールから出力され、自動インクリメントに応じてあります

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  
+1

sqliteが自動インクリメントをどのように扱うのかよく分かりませんが、 'PRIMARY KEY(id、username)'はIDとユーザー名をTOGETHERがPKにすることを意味します。ユーザー名を一意にするには、そのフィールドにUNIQUE制約/キーが必要です。 – Uueerdo

答えて

1

それはAUTOINCREMENT、ないAUTO INCREMENTです。また、SQLiteテーブルのフィールドにAUTOINCREMENT属性がある場合は、PRIMARY KEYである必要があります。

CREATE TABLE 'users' (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, hash TEXT); 

あなたは複合キーの一部としてAUTOINCREMENT属性を持つフィールドを使用することはできません。

関連する問題