現在、プライマリキーID
に問題があり、これはauto increment
に設定されています。それは増分を維持しますON DUPLICATE KEY
。例についてはInnoDBの自動インクリメントが無効になるのを防ぐ
:上記の説明から
ID | field1 | field2
1 | user | value
5 | secondUser | value
86 | thirdUser | value
、あなたは私がそのテーブルの3つの入力を持っていますが、原因各アップデートの自動インクリメントに、IDは、第三の入力のために86を持っていることに気づくでしょう。
これを避けるためにとにかくありますか?ここで
は私のMySQLのクエリは次のようになります。
INSERT INTO table (field1, field2) VALUES (:value1, :value2)
ON DUPLICATE KEY
UPDATE field1 = :value1, field2 = :value2
そして、ここに私のテーブルは次のようになります。
CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`field1` varchar(200) NOT NULL,
`field2` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `field1` (`field1`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
唯一のユニークな逐次IDを持つことは決して重要ではありません。シーケンシャルが必要な場合は、デザインに何か問題があります –
@ MarkBakerテーブルデザインの構造を含めるように投稿を編集しました – youngbobby
テーブルに別の列を作成して、手動で整数を追加してから、 'sID'列をクリックしてMAX値を見つけて、その値に+1して最新の挿入物を見つけることができます。 (あなたはおそらく自動的にSQLクエリでこれを行うことができます) – Martin