我必须使用表,并且我使用的是外键限制集,如果我尝试删除第一个表中用作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)