SQLite v3.7.5
有没有办法使 SQLite 外键 默认启用 级联删除
?
给出以下示例:
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
。