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