如果不存在,我需要在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的内容,但在我的案例中无法使其发挥作用。 你能帮我吗?
答案 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 KEY
或UNIQUE KEY
,否则您必须更新其中一个值。