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