sqlite不会自动递增

时间:2017-05-01 21:45:35

标签: python mysql sql sqlite

当我使用以下命令在SQLite3中创建我的表时,它不会自动增加ID,也不会使USERNAME成为主键,因为我可以输入具有相同USERNAME的多个用户,并且它会毫无问题地输入它们。

命令:

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

以下是来自控制台的输出,以显示它正在做什么,因为您可以告诉它让我输入用户名cat两次并且没有根据自动增量为id分配值:

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 个答案:

答案 0 :(得分:1)

它是AUTOINCREMENT,而不是AUTO INCREMENT。此外,如果SQLite表中的字段具有AUTOINCREMENT属性,则它也应该是PRIMARY KEY

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

您不能将AUTOINCREMENT属性字段用作复合键的一部分。