如何删除主键表的记录的前提是不能影响外键表

怎样删除主键表的记录却不影响外见表相关内容,比如有2个表,分别为“员工表”和“消费明细表”,关联。

员工表:

ID-----员工姓名

1----- test1

2------test2

消费明细表:

单号--------------------项目--------------服务员工

201401011-----------action1---------------1

201401012-----------action2---------------2

因为员工变动够大,每当有员工离职j时就要对“员工表”相关记录进行删除,但如果我在“员工表”中删除一条记录,那么“消费明细表”对应的记录就会级联删除,或外键设为为null,无论怎样“消费明细表”信息都受损。是否有合适的方法去解决这类问题,消费明细表如何永久保存?一些大型系统是如何做的?

MMTTMM
浏览 718回答 8
8回答

MMMHUHU

一般系统的数据都应该不会物理删除的 都只是一个status而已。 比如你把员工表建一个Status字段,0代表在职,1代表离职。 这样子表数据你都不用动的(当然在离职的时候。你也可以把子表的数据设置为无效:也同样加一个status字段)

Qyouu

难得大叔中规中矩的回答一次问题啊, 顶一个

慕的地6264312

这种应该不能删除的,设置一个状态,离职 在职 实习 等等。 如果要删除数据的话 应该加一个 逻辑删除的 flag, 防止历史数据删除

梦里花落0921

1.给员工表加个状态字段,标示 在职 还是 离职 不要做delete操作,只做update操作,你要的"删除"其实改一下状态即可。 2.关键数据库表别搞外键什么的了,用代码逻辑来控制

胡子哥哥

对于这种系统,不管是员工表还是消费明细表,都应该进行逻辑删除。

千巷猫影

从数据完整性上来讲,“员工表”的记录是不能删除了,这会导致“消费明细表”记录的描述不准确。抽象来说,当主表记录被删除后,从表记录的存在将失去意义。 “消费明细表”记录只是员工产生数据的一种方式,在该员工的工作期间,还会有社保信息、公积金信息和所做的项目信息,以及企业内部流程数据等等。一旦员工被真删,以上所有信息将找不到“操作人”。 在任何系统里,“员工表”的记录都不能被真删,拓宽的讲,进入了审核流程的业务数据也是不能真删的(草稿类型的业务数据可以真删)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server