如果它不存在则插入新的,如果存在,则插入更新

时间:2014-07-17 21:09:45

标签: mysql replace insert

如果不存在,我需要在BD上插入新记录,如果存在则更新。为此,我使用了2个查询:

INSERT  INTO tbl_ponto ( `rodada`, `ponto`, `patrimonio`, `FK_loginID` ) VALUES ( '10', 100.00, 100.00, 3 );
UPDATE tbl_ponto SET ponto=150.00, patrimonio=150.00 WHERE rodada=10 AND FK_loginID=3;

我只用1个查询就可以做到这一点。我读到了关于REPLACE的内容,但在我的案例中无法使其发挥作用。 你能帮我吗?

1 个答案:

答案 0 :(得分:2)

INSERT INTO tbl_ponto (`rodada`, `ponto`, `patrimonio`, `FK_loginID`)
    VALUES ('10', 100.00, 100.00, 3)
ON DUPLICATE KEY UPDATE ponto=150.00, patrimonio=150.00;

ON DUPLICATE KEY失败时会调用触发器INSERT,因为某些值与已存在的PRIVATE/UNIQUE KEY冲突。

在这种情况下,rodada, FK_loginID必须为PRIVATE KEYUNIQUE KEY,否则您必须更新其中一个值。

相关问题