起初这样的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
。但不是。 为什么不呢?