最初はそんな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
、. だがしかし。なぜだめですか?