1

通常、Sqlite がinteger primary keyステートメントに遭遇したとき、たとえば

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

その列は、Sqlite の内部 ID 列であるrowidid列のエイリアスになります。

ただし、追加not nullするときは

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

エイリアシングはまだアクティブですか?

NOT NULLはテーブルのセマンティック プロパティに影響を与えるべきではありませんが、エイリアシングの規則は非常に厳密です (たとえば、intの代わりに受け入れられませintegerん)。

4

1 に答える 1

3

ドキュメントによると、

行ID表に単一の列で構成される主キーがあり、その列の宣言された型が大文字と小文字が混在する「INTEGER」である場合、その列は行IDの別名になります。

「NOT NULL」は型の一部ではありませんが、(余分な) 列の制約であるため、これは引き続き行 ID になります。

于 2014-02-15T15:46:33.847 に答える