0

次のコマンドを使用してテーブルを作成しました。

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

私が抱えている問題はid、NOT NULL 制約にもかかわらず、列に NULL を挿入できることです。私が理解していることから、これはid列が のエイリアスになったためrowidです。

のデータ型を INTEGER ではなく INT に変更すると、制約は期待どおりに機能しますが、エイリアス (およびそれに伴う利点) はid失われます。rowid

私の質問は: のエイリアスである列に NULL を渡すときに制約エラーをスローする方法はありますrowidか?

4

2 に答える 2

1

私が抱えている問題は、NOT NULL 制約にもかかわらず、id 列に NULL を挿入できることです。

SQLiteに挿入しようとするとnull、次の適切な ID が黙って使用されます。INTEGER PRIMARY KEY

SQLite は便利に として解釈INTEGER PRIMARY KEYINTEGER PRIMARY KEY AUTOINCREMENT NOT NULLます。したがって、最初の行に ID を挿入するnullと、ID が 1 の行が作成されます。

于 2013-01-15T20:28:20.900 に答える
0

ここでの簡単な答えは、rowidnull の挿入を防ぎながらエイリアスを維持する方法がないということです。

于 2013-01-21T15:01:56.887 に答える