MySQL中空和空时创建惟一索引的一种方法
在许多情况下,数据库的默认值是null,但是在处理程序时会出现很多次,数据库值是空的而不是NULL。当创建唯一索引时,数据库将把空值作为多个重复值,而创建索引失败。示例如下:步骤1:
选择电话,从用户组(电话)计数(1);
----------------- ---------- + + +
| |电话数(1)|
----------------- ---------- + + +
|空| 70 |
| | 40 |
| + 86-13390889711 | 1 |
| + 86-13405053385 | 1 |
步骤1发现数据库中有70个空数据和40个空数据。
步骤2:
从用户是空的用户选择计数(1);
---------- + +
|计数(1)|
---------- + +
70 | |
---------- + +
1行集(0秒)
2再次验证数据库中空值和空值之间的两个值不同。
步骤3:
MySQL >删除用户表添加约束uk_phone独特的(电话);
错误1062(23000):重复录入key'uk_phone
索引是在此时作为重复属性创建的。
步骤4:将所有空值更改为null
更新用户设置电话=;
查询OK,40行受影响(0.11秒)
匹配行:40更改:40个警告:0
步骤5:再次创建一个惟一索引
MySQL >删除用户表添加约束uk_phone独特的(电话);
查询OK,0行受影响(0.34秒)
记录:0个重复:0个警告:0
创造成功,好吗