我必须使用表,并且我正在使用外键限制设置,如果我尝试删除第一个表中用作第二个表中的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,但删除后我找不到相应的方法。
答案 0 :(得分:2)
您可以单独执行DELETE语句并忽略FK约束错误。
或者,事先检查是否会发生违规行为:
DELETE FROM Ficheros
WHERE IDFichero IN (27, 28, ...)
AND NOT EXISTS (SELECT 1
FROM ChildTable
WHERE ChildTable.IDFichero = Ficheros.IDFichero)