如何插入带有自动递增列的行SQLite

本文关键字:SQLite 何插入 插入 | 更新日期: 2023-09-27 18:26:49

我下载了一个MySQL数据库,并使用这个PHP脚本将其解析为SQLite。

我在WPF上使用SQLite数据库,并且我能够使用这个库进行一些操作。问题是,我试图在一个带有自动增量字段的表中执行INSERT,但它不起作用,下面是我的查询:

SQLiteConnection conn = new SQLiteConnection("Data Source=test.db");
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "INSERT INTO tickets(created, user) values ('2015-12-12', 345)";
command.ExecuteNonQuery();
conn.Close();

这是我在.db:的

CREATE TABLE "tickets" (
  "id" int(11) NOT NULL ,
  "user" int(11) NOT NULL,
  "created" timestamp NOT NULL ,
  PRIMARY KEY ("id")
)

在MySQL中,我的查询运行得很好,我的id列总是获得下一个自动增量值,但在SQLite中,我无法将该值获得自动增量。当我运行应用程序时,它会崩溃,并显示下一条消息:

附加信息:约束失败

NOT NULL约束失败:tickets.id

我知道这个值不应该为null,但它应该是自动递增的。。。这可能吗?

如何插入带有自动递增列的行SQLite

您需要在创建表时将字段id指定为自动增量;

看看:

 CREATE TABLE "tickets" (
 "id" INTEGER PRIMARY KEY   AUTOINCREMENT,
 "user" int(11) NOT NULL,
 "created" timestamp NOT NULL);

您应该用AUTO INCREMENT关键字标记您的列,如下所示:

CREATE TABLE tickets(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   USER           INTEGER      NOT NULL,
   CREATED            TIMESTAMP       NOT NULL
);

来源:https://www.sqlite.org/autoinc.html