SQLite: 自增主键常见问题

15

我有以下的SQLite查询:

CREATE TABLE Logs ( Id integer IDENTITY (1, 1) not null CONSTRAINT PKLogId PRIMARY KEY, ...
  1. IDENTITY (1, 1)是什么意思?
  2. PKLogId是什么?似乎在任何地方都没有定义。
  3. 我想让Id成为具有autoincrementinteger primary key。 我希望能够在查询中省略Id列插入到此Logs表中。 我希望Id自动添加和增加。 这可能吗? 我该如何做?

目前,当我尝试插入时不使用Id,会出现以下错误:

Error while executing query: Logs.Id may not be NULL

看起来像是SQL Server语法。 - Michał Powaga
是的,这个“Create Table”查询已经从SQL Server转换为SQLite。 - Caner
3个回答

60

11
我的问题是我使用了INT而不是INTEGER。谢谢你的答案。 - Vishnoo Rath

12

修改为:

CREATE TABLE Logs ( Id integer PRIMARY KEY,....

0

如果您是程序员,您可能会对SQLite FAQ#1感兴趣:如何创建AUTOINCREMENT字段?:

简短回答:声明为INTEGER PRIMARY KEY的列将自动递增。

实际上,这并不完全准确。整数主键确实会递增,但是如果表删除所有行,则从头开始,如果您想要所有关联记录正确地绑定,请在整数字段的主键声明后使用autoincrement描述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接