问题
I need to insert a new record on BD if it doesn't exist, and update if it does. For this, I use 2 queries:
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;
I would do this with just 1 query. I read about REPLACE but could not make it work in my case. Could you please help me?
回答1:
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;
The trigger ON DUPLICATE KEY
is called when the INSERT
fails because some of the values conflict with a PRIVATE/UNIQUE KEY
that already exists.
In this case, rodada, FK_loginID
must be PRIVATE KEY
or UNIQUE KEY
, otherwise you will have to update one of those values.
来源:https://stackoverflow.com/questions/24813578/insert-a-new-if-it-doesnt-exist-and-update-if-it-does