gpt4 book ai didi

sqlite - “NOT NULL”是否防止rowid混淆?

转载 作者:行者123 更新时间:2023-12-03 15:06:04 27 4
gpt4 key购买 nike

通常,当Sqlite遇到integer primary key语句时,例如

CREATE TABLE [T] (id INTEGER PRIMARY KEY, [...]);


那么 id列将是rowid列(Sqlite的内部ID列)的别名。

但是,将 not null附加到

CREATE TABLE [T] (Id INTEGER PRIMARY KEY NOT NULL, [...]);


别名仍被激活吗?

NOT NULL不应影响表的语义属性,但别名的规则非常严格(例如,它将不接受 int而不是 integer),因此,此轻微更改可能已经可以防止别名。

最佳答案

根据documentation


如果rowid表的主键由单个列组成,并且该列的声明类型为大写和小写形式的“ INTEGER”,则该列将成为rowid的别名。


“ NOT NULL”不是类型的一部分,而是(多余的)列约束,因此它仍然是rowid。

关于sqlite - “NOT NULL”是否防止rowid混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21797805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com