0

我使用以下命令创建了一个表:

CREATE TABLE Person (id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL)

我遇到的问题是,id尽管有 NOT NULL 约束,我仍可以为该列插入 NULL。据我了解,这是因为该id列现在是rowid.

如果我将数据类型更改id为 INT 而不是 INTEGER,则约束按预期工作,但我失去了rowid别名(以及随之而来的好处)。

我的问题是:有没有办法在为作为别名的列传递 NULL 时引发约束错误rowid

4

2 回答 2

1

我遇到的问题是我可以为 id 列插入 NULL,尽管有 NOT NULL 约束。

如果您尝试nullINTEGER PRIMARY KEYSQLite 插入,将静默使用下一个适当的 id。

SQLite 方便地解释INTEGER PRIMARY KEYINTEGER PRIMARY KEY AUTOINCREMENT NOT NULL. 因此,为第一行插入一个nullid 将创建一个 id 为 1 的行,依此类推。

于 2013-01-15T20:28:20.900 回答
0

这里的简短回答似乎是没有办法在维护rowid别名的同时防止空插入。

于 2013-01-21T15:01:56.887 回答