我有以下法典:
int result = -1;
StringBuilder sb = new StringBuilder();
SqlCommand cmd = MyConnection.
sb.AppendLine("delete from Table1 where ID in");
sb.AppendLine("(select id from Table1 t1 where not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))");
cmd.CommandText = sb.ToString();
result = cmd.ExecuteNonQuery();
_log.Info("StoredXMLDocument Records Deleted: " + result.ToString());
简言之,以更可读的形式,是:
delete from Table1 where ID in
(select id from Table1 t1 where not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))
我知道,库克在数据库中直接执行时,就删除了一行。 然而,当该守则运行时,result获得1. 。 我期望它为0。 表1没有触发因素。 我失踪了吗? 为什么是1?
<>Addendum: ok,在我管理数据库中的舱面时,删除了一行。 请注意,在所有测试之前,我从仅为此目的而节省的备份I中恢复数据库。 今天上午或昨天下午,我戴上了一条row子,在恢复后是的。 我不想让我戴高射药,今天下午再次讨论这个问题。 抱着希望更清楚的思维。