如何插入带有自动递增列的行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,但它应该是自动递增的。。。这可能吗?
您需要在创建表时将字段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