0

一开始这样的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. 但不是。为什么不?

4

0 回答 0