为了备案,删除功能并不采用delete语句,而是采用 设置一个 删除标记 delflag为真的方式。
这种方式下的一个问题是,表的主键该怎么设?因为没有 delflag之前,可以有个id,但有delflag之后,同一个id(比如身份证号) 对应delflag真假的可能就有2或3条记录。遇到这种情况 大家怎么处理?谢谢
这种方式下的一个问题是,表的主键该怎么设?因为没有 delflag之前,可以有个id,但有delflag之后,同一个id(比如身份证号) 对应delflag真假的可能就有2或3条记录。遇到这种情况 大家怎么处理?谢谢
是的,这个建议不错。你可以有两张表,一个是真正生效的id 正式表,一个是被删除之后用来备案的id 表。
正式表 当然可以以id 为主键,备用表没有太大关系。
当需要查看备案时,可以直接查看备用表,或者可以把正式表和备用表union 起来做个视图。
CREATE UNIQUE INDEX UIDX_TEST
ON TABLE(DECODE(delflag,0,id));
但是使用函数索引查询时有问题,所以为了查询需要另外建一个索引
CREATE INDEX IDX_TEST
ON TABLE(id,delflag);