使用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);
有人知道什么是错的吗?提前谢谢。
答案 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