空值的使用无效

时间:2013-03-25 02:47:35

标签: mysql sql mysql-error-1138

使用mySQL时遇到问题。

弹出此错误:

Invalid use of null value

我试图在表中将两个属性作为主键;这是我的代码:

alter table contact_info
add primary key(phone_number, contactID);

以下是我在contact_info表中添加的alter语句:

alter table contact_info
add contactID varchar(10);

alter table contact_info
add suffixID varchar(8);

alter table contact_info
add titleID varchar(12);

alter table contact_info
add companyID varchar(12);

alter table contact_info
add phonetypeID char(2);

有人知道什么是错的吗?提前谢谢。

2 个答案:

答案 0 :(得分:9)

查找phone_number或contactID中具有空值的contact_info。您无法在表中添加具有现有空值的主键。

select *
from contact_info
where (phone_number is null or contactID is null)

运行该SQL以查找值为null的任何记录。更新记录,然后再次尝试应用主键。

我不确定您在做什么,但在运行任何更新之前,您可能希望首先备份数据!!! 。以下是您可以用来设置contactID的更新:

update contact_info
set contactID = (select max(contactID) from contact_info) + 1
where contactID is null

update contact_info
set phone_number = '555-1212'
where phone_number is null

如果您的数据中有重复项,则需要找到它们并更新它们。以下是您可以找到重复项的方法:

-- Assuming the phone_number is duplicate (2 people living in the same house with the same phone number)
select a.phone_number, count(1)
from contact_info a
group by a.phone_number
having count(1) > 1

答案 1 :(得分:1)

运行此查询将告诉您违规列的位置。您不能将NULL值设置为主键。

SELECT *
FROM contact_info
WHERE phone_number IS NULL
OR contactID IS NULL