如何忽略外键对删除的限制?

时间:2014-07-05 16:43:55

标签: sqlite c#-4.0 sql-delete

我必须使用表,并且我正在使用外键限制设置,如果我尝试删除第一个表中用作第二个表中的FK的记录,则不执行任何操作。我想要这种行为。

问题在于,当我有很多像这样的T-SQL时:

strTSQL = "delete or ignore from Ficheros where IDFichero = 28"
strTSQL = strTSQL + ";delete or ignore from Ficheros where IDFichero = 27"

如果第一个T-SQL失败,则不执行下一个查询。我想执行下一个查询,尽管第一个查询失败。

在插件中我可以使用:

插入或忽略....

在这种情况下,如果我尝试插入违反唯一约束的记录,请忽略该错误并继续使用下一个T-SQL,但删除后我找不到相应的方法。

1 个答案:

答案 0 :(得分:2)

您可以单独执行DELETE语句并忽略FK约束错误。

或者,事先检查是否会发生违规行为:

DELETE FROM Ficheros
WHERE IDFichero IN (27, 28, ...)
  AND NOT EXISTS (SELECT 1
                  FROM ChildTable
                  WHERE ChildTable.IDFichero = Ficheros.IDFichero)