我创建了一张目前已包含10行的卡片表。如果我执行:
delete from [Card] where cardnumber = 00010 //this card being held in the last row
我得到了结果消息(1行(s)受影响),我希望它可以正常工作,但是在打开表格后我发现该行仍在那里。
接下来我在SSMS中使用Edit Top 200 Rows来手动选择行并将其删除,然后将其从表中删除,但是当我执行时,该行又回到表中。
最后,我创建了一个存储过程,在执行时返回成功,但仍未保留更改。
但奇怪的是,我有一张与Card表有关系的CardAmount表,每张卡都有点数,而且这些卡正在从CardAmount中删除。
我看过this个问题,但我认为这个问题没有得到解决。
答案 0 :(得分:2)
首先猜测(结果证明是正确的)是instead of delete
触发器,忘记实际影响它要执行删除的表。
这是一个常见的错误,特别是如果您正在实现一些影响深远的级联(并且不能仅在外键约束上使用ON DELETE CASCADE
),您必须使用INSTEAD OF
触发但忽略在基础表上执行DELETE
。