你好,提供两个解决方案,供参考:
从数据库层面避免。如果要完全避免主键约束,并且业务逻辑设计允许该表不唯一,可以删除主键索引,建立普通索引。
从代码逻辑层面控制,这是普遍做法。插入数据据之前,先查询数据是否存在,不存在才插入,或者报主键冲突异常,返回页面数据已存在提示。
你的【手机号码】字段中有不符合【你建的约束的数据】,把这样的数据删掉再建就可以了,为了方便起见。1、先把数据转存到另外一个表中:
select * into tmp from 号码纪录
2、删除原表数据
truncte table 号码纪录
3、增加check约束
alter table 号码纪录 add constraint ck_手机号码 check(手机号码 like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
4、把符合条件的数据导回
insert into 号码纪录 select * from tmp where tmp.手机号码 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
5、删除临时表
drop table tmp
---
以上,希望对你有所帮助。
如果您的数据库中已经存在重复的user,那么您想追加uniqueconstraint的时候是会报错的。可以查一下是否您的这个表是否已经存在重复的user,先清理一遍,保证没有重复的user,再加唯一约束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)