2012-01-24 46 views
0

我正在開發JSF 2.0中的應用程序,因爲我正在使用MySQL作爲DBMS。 我在INSERT ... ON DUPLICATE KEY UPDATE語句中遇到問題,它在每次更新行時都會生成一個新的主鍵。這是我正在使用的查詢。使用INSERT ON DUPLICATE KEY UPDATE生成主鍵時出現問題

INSERT INTO aanwezigheid_i (jongereId, datum, aanwezig, aankomstTijd, vertrekTijd, alternatiefKamp, redenAfwezig) 
VALUES (?,?,?,?,?,?,?) 
ON DUPLICATE KEY 
UPDATE aanwezig = ?, aankomstTijd = ?, vertrekTijd = ?, alternatiefKamp = ?, redenAfwezig = ? 

表 'aanwezigheid_i' 已經拿到了下列:

aanwezigheidId(INT(11),PRIMARY KEY)| jongereId |數據| aanwezig | aankomstTijd | vertrekTijd | alternatiefKamp | redenAfwezig

如果我插入的第一行中,主鍵「aanwezigheidId」已經得到的值爲1 如果我更新此第一行10次,之後插入的第二行,第二行的主鍵值是12而不是2.我做錯了什麼? 任何幫助,將不勝感激。

+0

做些什麼,除了你可以張貼'SHOW CREATE TABLE aanwezigheid_i的輸出;'? –

回答

1

您不會將aanwezigheidId - 主鍵 - 輸入INSERT,這就是創建新行的原因。當插入具有現有密鑰的記錄時,ON DUPLICATE KEY UPDATE子句纔會生效。

2

如果使用AUTO_INCREMENT關鍵,要知道,在計算新AUTO_INCREMENT值試圖在INSERT之前完成。如果INSERT轉換爲UPDATE,則新的AUTO_INCREMENT值將丟失。

這是設計的,沒有什麼可以從沒有使用AUTO_INCREMENT

+0

你知道如何在插入前獲得主鍵的值嗎?我需要它的價值來填補'?'用於INSERT語句中的'aanwezigheidId'。 – Bart1990

相關問題