在数据库里面,如果想保证某个字段的唯一性,一定要建唯一索引,而不能指望在插入或更新前的代码检测。
比如
IF NOT EXISTS(SELECT 1 FROM User WHERE Email=@Email)
{
INSERT …
}
1、 这种做法不能保证并发情况下一定正确;
2、 数据库忙的时候,可能会出现令人意外的结果。
这是很浅显的道理,可惜我要经过许多弯路之后才明白。并且历经千辛万苦才修改过来。
本文讲述了在数据库中确保字段唯一性的最佳实践,强调了通过建立唯一索引来替代代码级检查的方法,以避免并发问题和意外结果。
在数据库里面,如果想保证某个字段的唯一性,一定要建唯一索引,而不能指望在插入或更新前的代码检测。
比如
IF NOT EXISTS(SELECT 1 FROM User WHERE Email=@Email)
{
INSERT …
}
1、 这种做法不能保证并发情况下一定正确;
2、 数据库忙的时候,可能会出现令人意外的结果。
这是很浅显的道理,可惜我要经过许多弯路之后才明白。并且历经千辛万苦才修改过来。
258

被折叠的 条评论
为什么被折叠?