在数据库里面,如果想保证某个字段的唯一性,一定要建唯一索引,而不能指望在插入或更新前的代码检测。
比如
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、 数据库忙的时候,可能会出现令人意外的结果。
这是很浅显的道理,可惜我要经过许多弯路之后才明白。并且历经千辛万苦才修改过来。