我在
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)
);
在 SQLite 中,如果将列指定为主键,则无需指定 AUTOINCRMENT...
SQLite 自动增量:你应该避免使用它
除非您创建指定
WITHOUT ROWID
选项的表,否则您将获得一个名为 rowid
的隐式自动增量列。
rowid
列存储唯一标识表中一行的 64 位有符号整数。
我在下面遇到了同样的错误:
解析错误:“自动增量”附近:语法错误
因为我使用了
AUTOINCREMENT
而没有使用INTEGER PRIMARY KEY
,如下所示:
CREATE TABLE my_table (
id INTEGER AUTOINCREMENT
# ↑↑↑↑↑↑↑↑↑↑↑↑↑
);
于是,我将
AUTOINCREMENT
与INTEGER PRIMARY KEY
一起使用,如下所示,然后错误就解决了:
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT
# ↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑ ↑↑↑
);
医生说如下:
任何尝试在 NOT ROWID 表或
列以外的列上使用AUTOINCREMENT
都会导致错误。INTEGER PRIMARY KEY
此外,如果您使用
TEXT
,请输入PRIMARY KEY AUTOINCREMENT
,如下所示:
CREATE TABLE my_table (
id TEXT PRIMARY KEY AUTOINCREMENT
# ↑↑↑↑
);
然后,您会收到以下错误:
解析错误:仅在整数主键上允许自动增量
这是一个简单的解决方案。只需使用
AUTOINCREMENT
代替 AUTO_INCREMENT