我正在开发JSF 2.0中的应用程序,因为DBMS我正在使用MySQL。 我遇到了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 :(得分:2)
如果您使用AUTO_INCREMENT
密钥,请注意,在尝试AUTO_INCREMENT
之前,计算新的INSERT
值是。如果INSERT
转换为UPDATE
,则新AUTO_INCREMENT
值将丢失。
这是设计的,除了不使用AUTO_INCREMENT
答案 1 :(得分:1)
您没有将 aanwezigheidId - 主键 - 发送到INSERT
,这就是创建新行的原因。 ON DUPLICATE KEY UPDATE
子句仅在插入包含现有密钥的记录时生效。