在 SQLite 中,当执行 DELETE FROM 语句时外键约束看似不起作用,通常有以下几个常见原因:
外键约束未启用
SQLite 的外键约束默认是关闭的,需要显式启用。如果没有执行以下语句,外键约束将不会生效:
sql
PRAGMA foreign_keys = ON;
注意:这个设置是会话级别的,每次连接数据库后都需要重新执行。
public void DeleteTable(string tableName)
{
string sql = $"PRAGMA foreign_keys = ON; DELETE FROM {tableName}";
using (var connection = new SQLiteConnection(_connectionString))
{
connection.Open();
using (var command = new SQLiteCommand(sql, connection))
{
command.ExecuteNonQuery();
}
}
}