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
на уровне базы данных.