我已经使用以下命令创建了一个表:
CREATE TABLE Person (id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL)我遇到的问题是,尽管有NOT NULL约束,我仍然可以为id列插入NULL。据我所知,这是因为id列现在是rowid的别名。
如果我将id的数据类型更改为INT而不是INTEGER,约束将按预期工作,但会丢失rowid别名(以及随之而来的好处)。
我的问题是:当为作为rowid别名的列传递NULL时,有没有办法抛出约束错误
发布于 2013-01-21 23:01:57
这里的简短答案似乎是,没有办法在维护rowid别名的同时防止空值插入。
发布于 2013-01-16 04:28:21
我遇到的问题是,尽管有NOT NULL约束,我仍然可以为id列插入NULL。
如果您尝试为INTEGER PRIMARY KEY插入null,SQLite将静默使用下一个适当的id。
SQLite很方便地将INTEGER PRIMARY KEY解释为INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL。因此,为第一行插入一个null id将创建一个id为1的行,依此类推。
https://stackoverflow.com/questions/14346190
复制相似问题