我必须使用表,并且我使用的是外键限制集,如果我尝试删除第一个表中用作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,但是对于删除,我找不到解决方法。

最佳答案

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

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

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

10-05 19:40