我在AUTOINCREMENT
附近得到一个语法错误。这个错误的原因是什么?
CREATE TABLE person (
id INTEGER NOT NULL AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE TABLE department (
id INTEGER NOT NULL AUTOINCREMENT,
name TEXT NOT NULL,
FOREIGN KEY (leader) REFERENCES person(id)
);
5条答案
按热度按时间gcxthw6b1#
根据SQLite FAQ,你必须声明一个
INTEGER PRIMARY KEY
或INTEGER PRIMARY KEY AUTOINCREMENT
列来实现这一点。zc0qhyus2#
在SQLite中,如果你指定一个列作为主键,你不需要指定AUTOINCREMENT。
zu0ti5jz3#
SQLite自动增量:你应该避免使用它。
除非创建一个指定
WITHOUT ROWID
选项的表,否则将得到一个名为rowid
的隐式自动增量列。rowid
列存储唯一标识表中的行的64位有符号整数。0s0u357o4#
我在下面得到了同样的错误:
分析错误:接近“自动增量”:语法错误
因为我使用了
AUTOINCREMENT
而没有INTEGER PRIMARY KEY
,如下所示:所以,我使用
AUTOINCREMENT
和INTEGER PRIMARY KEY
,如下所示,然后错误就解决了:doc在下面说:
在WITHOUT ROWID表或
INTEGER PRIMARY KEY
列以外的列上使用AUTOINCREMENT
的任何尝试都会导致错误。此外,如果您使用
TEXT
类型与PRIMARY KEY AUTOINCREMENT
,如下所示:然后,你会得到下面的错误:
分析错误:只允许在INTEGER PRIMARY KEY上使用自动递增
2w3kk1z55#
这是个简单的解决办法使用
AUTOINCREMENT
代替AUTO_INCREMENT