Mysql唯一键和主键。需要了解行为

时间:2013-09-12 07:11:40

标签: mysql

起初这样的mysql

NumberRenamed INT NOT NULL AUTO_INCREMENT,
CompanyName char(255) NOT NULL,
RegistrationNumber char(255),
....
PRIMARY KEY (NumberRenamed),
UNIQUE KEY `CompanyName` (`CompanyName`),
...

查询就像这样

INSERT INTO TableName (NumberRenamed, CompanyName, RegistrationNumber) VALUES
ON DUPLICATE KEY UPDATE RegistrationNumber = VALUES(RegistrationNumber), CompanyName = VALUES(CompanyName)

NumberRenamed的值为1

CompanyName的值为NULL

RegistrationNumber的值是1

执行查询,获取

NumberRenamed | CompanyName | RegistrationNumber 
------------------------------------------------
     1        |   NULL      |   1

然后

NumberRenamed的值为1

CompanyName的值为1

RegistrationNumber的值是1

但不是

NumberRenamed | CompanyName | RegistrationNumber 
------------------------------------------------
     1        |   1         |   1

得到了

NumberRenamed | CompanyName | RegistrationNumber 
------------------------------------------------
     1        |   NULL      |   1
     2        |   1         |   1

添加了UNIQUE KEY 'NumberRenamed' ('NumberRenamed'),。现在按预期工作

我认为NumberRenamed是主键,因此如果重复值(如果查询中的值与表中的值相同),那么ON DUPLICATE KEY UPDATE。但不是。 为什么不呢?

0 个答案:

没有答案