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
在数据库级别启用的东西。