大家好,我在尝试从父表中删除一行时遇到问题,实际上我已经创建了 2 个表客户和帐户。我在客户中创建客户 id(主键),在帐户中创建客户 id(外键)创建后,我已在两个表中填充了数据。 此时,当我尝试从第一个表(客户)中删除一行时,它给出的失败消息是它无法被删除,因为它被引用为 forigen key 之类的东西......... ...但是当我们从帐户表中删除行时,它就完全删除成功了。 ......我想要这样的功能,如果我从父表(客户)中删除一行,那么它在子表中具有相同客户ID(帐户表)的行将自动删除...... ......
最佳答案
小心级联删除!用户会不小心点击应用程序的小垃圾桶图标并删除客户,然后所有级联将从数据库中删除该客户的所有痕迹、订单、发票、付款、历史记录等。当用户打电话告诉您他们的小错误后,您必须恢复备份并尝试将信息拉回到数据库中。
我会研究“软删除”,您只需将客户的状态从“活跃”更改为“非活跃”。行不会被删除,保留所有外键数据。这允许在数据上运行报告,因为它仍然存在,并且可以轻松“撤消”。
软删除并不是最终的唯一方法,而是如何处理此问题、清除数据或将其标记为非事件的业务决策。这只是你可以决定的事情,因为我不知道你的应用程序或业务逻辑。我只是想我会提供它作为替代方案。
关于sql-server - 当子表通过外键与父表连接时,如何从父表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574290/