JackeyLove (@jackeylove01)逻辑删除所引发的数据库唯一字段冲突 中发帖

佬友们,最近在写crud时遇到一个问题,用户创建了一个账号,删除掉了,又想要创建一个同名账号,结果失败了,而且没有提示说账号名重复。 
于是我就去查看了代码,发现了问题是用户名是唯一约束的,而且该表启动了逻辑删除,而我在验证重复账号名的方法中使用的是mybatis plus的查询,会略过逻辑删除的数据,所以导致相同数据落库引发数据库报错。
那我就想着那就将用户名跟逻辑删除字段做个唯一性约束而不是单独给用户名做约束,结果发现第二个账号是创建成功了,但是删不掉了。
求助ai跟询问业务需求后,决定在添加账号这个方法里面,添加一个验证删除方法。
具体就是不用mybatis plus的方法,而是在mapper中写两个sql,一个是查询是否有相同账号名的方法,一个是物理删除的方法(这样就能访问到被逻辑删除的数据),添加新账号前,先查询是否有相同的账号名且被逻辑删除的,如果有就物理删除这个账号。
...