SQLite v3.7.5
Есть ли способ включить внешние ключи SQLite с cascade delete
включенным по умолчанию? Учитывая следующий пример:
CREATE TABLE [Parent] (
[ParentId] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Name] VARCHAR(50) UNIQUE NOT NULL
);
CREATE TABLE [Child] (
[ChildId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[ParentId] INTEGER NOT NULL,
[Name] VARCHAR(50) NOT NULL,
FOREIGN KEY(ChildId) REFERENCES Child(ParentId) ON DELETE CASCADE
);
Единственный способ включить каскадное удаление — выполнить команду PRAGMA foreign_keys = true
перед транзакцией:
using( var conn = new SQLiteConnection( _conn ) )
{
conn.Open();
var pragma = new SQLiteCommand( "PRAGMA foreign_keys = true;", conn );
pragma.ExecuteNonQuery();
var cmd = new SQLiteCommand( "Delete from Parent where ParentId = 1", conn );
cmd.ExecuteNonQuery();
}
Есть ли параметр на уровне базы данных, который можно настроить вместо вызова команды pragma перед каждой транзакцией?
Я видел триггеры для включения каскадного удаления, но я ищу что-то, что просто включало бы PRAGMA foreign_keys = true
на уровне базы данных.