次のような SQLite テーブルがあります。
CREATE TABLE myTable (
_id integer primary key autoincrement,
...
... /* some useful fields */
...
parent integer,
FOREIGN KEY (parent) REFERENCES myTable (_id)
);
myTable のエントリには、親を持つものと持たないものがあります。ビジネス ロジックは、「円」がないことを保証します。を使用してPRAGMA foreign_keys = ON
いるため、外部キー違反が検出されます。
質問:テーブル全体を削除したい場合、実行するだけで十分DELETE FROM myTable
ですか? または、外部キー違反を避けるために、最初に「葉」を削除し、次にその親などを削除する必要がありますか?
私はそれをテストしましたが、使用するだけでうまくいくDELETE FROM myTable
ようです。ただし、これが単なる偶然なのか、信頼できるものなのか (つまり、文書化され、予想される動作) を知りたいと思っています。
ON DELETE CASCADE
編集:有効にしていません。これは意図的なものです。