sqlserver 怎么设置唯一性 可为NULL

我有一个表,有两个字段,Email和Mobile.用户可以用Email或Mobile来登录 。但是注册的时候经常出现重复提交,导致Email或Mobile重复的问题。怎么设置它的唯一性?
ALTER TABLE ACCOUNT ADD CONSTRAINT u_store UNIQUE NONCLUSTERED(MOBILE)
我用这个代码来设置说字段有重复的键,可能是为NULL导致的。如何解决?我想要设置成可以为NULL的但是又希望能够设置重复约束。

第1个回答  推荐于2016-09-28
这个东西在数据库控制可以,但是效果不是很好。

可以在前台控制,注册时填写完Email或者Mobile时,就去数据库查一下是否重复,不重复通过,重复了前台直接报错。做好不要把任务交给数据库做,数据库可以设置唯一性约束,但是这只是最后一把锁,最主要实在前台控制好。追问

我也是查一下的,只是有时候网络卡之类的,多点了几下,导致数据有错开的现象。然后就添加了两条。

追答

不是很明白的你的意思,如果网络环境不好,前台查询的时候网络中断,这些情况可以用try catach解决,总之是需要前台控制的。
前台不但需要控制不允许重复,还需要控制格式啦,长度啦,密码复杂度等等。

追问

没有网络中断。多点几下,会重复提交 ,然后数据会重复插入,虽然我判断了是否存在,但是在网络环境不好的情况下有时候会失效 。

追答

为什么会多点几下呢?前台可以设置的灵活一些,比如说按钮按下后,按钮就失效(只可以点击一下)

追问

我现在就是这么做的,万一有人用自动提交器或者其他方式呢?毕竟JS有它的灵活性,也有它的不安全性。

追答

。。。。。。我不清楚的开发的是什么样的项目,我也不是专门做开发的,我们只是给公司内部开发,从来没想过那么多,给你一个建议吧,现在需要注册的网站论坛一堆一堆的,借鉴借鉴前辈门的经验吧。

本回答被提问者和网友采纳
第2个回答  2014-07-08
设为唯一允许有空值,但是空值也只允许最多一个
相似回答