2

さて、SQLLiteではカスケードで削除する可能性はありません、または私は方法がわかりません。

テーブルAとテーブルBの2つのテーブルがあるとします。テーブルBには、子であるためIDtableAフィールドがあり、次の状況があると想像してください。

1.-ユーザーTableAからレコード1をロードし、コンテキストでロードします。2.-ユーザーAはテーブルBからすべての子レコードをロードします。3.-ユーザーBはテーブルAの子であるテーブルBに新しいレコードを追加します。4.-ユーザーAは変更を保存し、レコード1と彼のすべての子を削除します。初めてロードされますが、ユーザーBによって追加された新しい子は含まれません。

したがって、SqlLiteにはモデルがなく、テーブル間の実現もありません。ユーザーBが新しい子を追加するときに、親が存在するかどうかを確認しません。

Sqliteで参照整合性を確保することは可能ですか?

ありがとう。

4

1 に答える 1

3

SQLiteは外部キーと「カスケード削除時」をサポートしていますが、新しいバージョンではサポートされています。

この記事はSQLiteの公式ウェブサイトで見ることができます:

sqlite.org/foreignkeys.html

言う:

このドキュメントでは、SQLiteバージョン3.6.19で導入されたSQL外部キー制約のサポートについて説明します。

また、接続ごとに外部キーを明示的に有効にする必要があります。

この質問はあなたを助けるかもしれません:SQLiteで外部キー制約を有効にする

これを行うには、接続文字列を変更して次を追加します。

foreign keys=true; 
于 2012-12-16T10:22:17.687 に答える