逻辑删除 保持数据唯一性问题

wygxz 发布于 2013/01/11 09:57
阅读 469
收藏 0

如果数据表的某个字段要求唯一性约束,比如User表的name字段,但如果设计为假删除(逻辑删除)的话,就不能将该字段设置为唯一性约束。但如果不将该字段设置为唯一性约束的,那么在每次插入数据表的时候,都需要进行一次查询,这要做是低效率的,而且在高并发的系统中,是不能保证正确性的。
例如数据表结构:

name  flag

aa     F

aa    T

aa    T    

我改怎么保证 flag 是F 的 name是aa的保证唯一? 

坐等大牛.. 

加载中
0
StormFour
StormFour

ORACLE 的话可以这样处理

create unique index idx on user(case when flag = 'f'  then name end);

0
w
wygxz

引用来自“StormFour”的答案

ORACLE 的话可以这样处理

create unique index idx on user(case when flag = 'f'  then name end);

果然!  谢谢您
返回顶部
顶部