首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rowid integer主键时SQLite中的强制约束错误

问使用rowid integer主键时SQLite中的强制约束错误
EN

Stack Overflow用户
提问于 2013-01-16 04:23:02
回答 2查看 385关注 0票数 0

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

代码语言:javascript
复制
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时,有没有办法抛出约束错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-21 23:01:57

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

票数 0
EN

Stack Overflow用户

发布于 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的行,依此类推。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14346190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档