sql-server - 当子表通过外键与父表连接时,如何从父表中删除一行

标签 sql-server database

大家好,我在尝试从父表中删除一行时遇到问题,实际上我已经创建了 2 个表客户和帐户。我在客户中创建客户 id(主键),在帐户中创建客户 id(外键)创建后,我已在两个表中填充了数据。 此时,当我尝试从第一个表(客户)中删除一行时,它给出的失败消息是它无法被删除,因为它被引用为 forigen key 之类的东西......... ...但是当我们从帐户表中删除行时,它就完全删除成功了。 ......我想要这样的功能,如果我从父表(客户)中删除一行,那么它在子表中具有相同客户ID(帐户表)的行将自动删除...... ......

最佳答案

小心级联删除!用户会不小心点击应用程序的小垃圾桶图标并删除客户,然后所有级联将从数据库中删除该客户的所有痕迹、订单、发票、付款、历史记录等。当用户打电话告诉您他们的错误后,您必须恢复备份并尝试将信息拉回到数据库中。

我会研究“软删除”,您只需将客户的状态从“活跃”更改为“非活跃”。行不会被删除,保留所有外键数据。这允许在数据上运行报告,因为它仍然存在,并且可以轻松“撤消”。

软删除并不是最终的唯一方法,而是如何处理此问题、清除数据或将其标记为非事件的业务决策。这只是你可以决定的事情,因为我不知道你的应用程序或业务逻辑。我只是想我会提供它作为替代方案。

关于sql-server - 当子表通过外键与父表连接时,如何从父表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574290/

相关文章:

sql - 通过 VB.NET 将 DateTime 插入 SQL Server CE 数据库

database - 在 StackOverflow 克隆中,Comments 表与 Questions and Answers 应该有什么关系?

sql - 重建数据库中的所有索引

sql-server - 无法使用子查询在 Left join 之后创建 where 子句

mysql - 如何访问远程服务器上的phpMyAdmin

sql - 在 SQL 数据库中存储 "list"的最正确方法是什么?

java - 将多个日期格式更改为一个日期格式的sql函数

c# - 分页时出现算术溢出错误

c# - 获取上下文连接并将其用作其他地方的连接

SQL Server 数据库保护免受聪明的管理员?