Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

数据库唯一索引与逻辑删除冲突 #1750

Closed
wanduanrui opened this issue Oct 26, 2019 · 2 comments
Closed

数据库唯一索引与逻辑删除冲突 #1750

wanduanrui opened this issue Oct 26, 2019 · 2 comments

Comments

@wanduanrui
Copy link

当前使用版本(必须填写清楚,否则不予处理)

3.2.0

该问题是怎么引起的?(最新版上已修复的会直接close掉)

逻辑删除报唯一索引冲突异常

重现步骤

如User表有二个字段 user_phone,delete_flag。delete_flag是逻辑删除字段,0代表未删除,1代表删除。user_phone字段有唯一索引。此时有记录{"13712345678",0},后来13712345678用户需要注销账号,于是将此记录逻辑删除记录变为{"13712345678",1},即已删除。后来这个用户又用这个手机注册账号,于是向表里添加记录{"13712345678",0},但是因为user_phone有唯一索引,所以插入记录时报唯一索引冲突。开始解决办法是,将唯一索引变为user_phone+delete_flag的联合唯一索引。于是创建用户成功。此时数据表数据为{"13712345678",1},{"13712345678",0}。但是当这个用户再次注销,将记录{"13712345678",0}更改为{"13712345678",1}时,又报联合唯一索引冲突。
所以终极解决办法是,删除字段的值0代表未删除,然后用删除时的时间戳代表删除。但是我们框架删除字段值是写死的无法实现这个功能。望改善。

报错信息

@miemieYaho
Copy link
Member

你自己业务问题自己去改善

@kililixi
Copy link

@wanduanrui 老哥,3.20这个已经支持了 #1386

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants