解析错误:接近“自动增量”:语法错误 - SQLite
我在 AUTOINCRMENT
附近遇到语法错误。出现这个错误的原因是什么?
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)
);
I get a syntax error near AUTOINCREMENT
. What is the cause of this error?
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)
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
根据 SQLite 常见问题解答,您必须声明
INTEGER PRIMARY KEY
或INTEGER PRIMARY KEY AUTOINCRMENT
列来实现这一点。According to SQLite FAQ you have to declare either a
INTEGER PRIMARY KEY
orINTEGER PRIMARY KEY AUTOINCREMENT
column to achieve that.在 SQLite 中,如果将列指定为主键,则无需指定 AUTOINCREMENT...
In SQLite you need not to specify AUTOINCREMENT if you are specifying a column as Primary Key...
SQLite AUTOINCRMENT:您应该避免使用它
除非您创建一个指定
WITHOUT ROWID
选项的表,否则您将获得一个名为rowid
的隐式自动增量列。rowid 列存储唯一标识表中行的 64 位有符号整数。
SQLite AUTOINCREMENT : You Should Avoid Using It
Unless you create a table specifying the
WITHOUT ROWID
option, you get an implicit auto increment column calledrowid
.The
rowid
column store 64-bit signed integer that uniquely identifies a row within the table.我得到了同样的错误如下:
因为我使用了
AUTOINCRMENT
而没有INTEGER PRIMARY KEY
,如下所示:所以,我使用了
AUTOINCRMENT
和 < code>INTEGER PRIMARY KEY 如下所示,则错误得到解决:The doc< /a> 如下所示:
另外,如果您将
TEXT
类型与PRIMARY KEY AUTOINCRMENT
一起使用,如下所示:然后,您会收到以下错误:
I got the same error below:
Because I used
AUTOINCREMENT
withoutINTEGER PRIMARY KEY
as shown below:So, I used
AUTOINCREMENT
withINTEGER PRIMARY KEY
as shown below, then the error was solved:The doc says below:
In addition, if you use
TEXT
type withPRIMARY KEY AUTOINCREMENT
as shown below:Then, you get the error below:
这是一个简单的解决方案。只需使用
AUTOINCRMENT
而不是AUTO_INCRMENT
It's an easy solution. Just use
AUTOINCREMENT
instead ofAUTO_INCREMENT