删除完整的用户帐户时,正确使用关系/约束

时间:2013-09-17 19:13:38

标签: mysql foreign-keys constraints

如果要删除包含所有基础数​​据的完整用户帐户,如何处理约束?

我在某些表上使用RESTRICT ON DELETE来保持一致性,但是当我想删除完整的用户帐户时,如何处理约束呢?然后我得到Integrity constraint violation

在某些表格中我也使用CASCADE ON DELETE所以我不能忽略所有约束

1 个答案:

答案 0 :(得分:0)

  1. 开始交易。
  2. 对于每个具有ON DELETE RESTRICT的表,删除右侧行。表的顺序有时很重要;从用户表中“最远”的表开始。 (见下文。)
  3. 然后删除该用户。 ON DELETE CASCADE应删除剩余的 行。
  4. 提交交易。
  5. 当你有一个带有ON DELETE RESTRICT的表“链”时,表的顺序很重要。

    Table_N
        Table_M references Table_N ON DELETE RESTRICT
            Table_P references Table_M ON DELETE RESTRICT
    

    您需要首先从Table_P删除,然后从Table_M删除,然后删除Table_N。