Re: most idiomatic way to "update or insert"?
От | Matteo Beccati |
---|---|
Тема | Re: most idiomatic way to "update or insert"? |
Дата | |
Msg-id | 41128FDD.9080008@beccati.com обсуждение исходный текст |
Ответ на | Re: most idiomatic way to "update or insert"? (Tommi Maekitalo <t.maekitalo@epgmbh.de>) |
Ответы |
Re: most idiomatic way to "update or insert"?
|
Список | pgsql-general |
Hi, > I prefer to update and if the number of updated rows equals 0 do an > insert. So in case of update I need only one roundtrip. If insert is far > more common in this case it might be better try insert and catch the > error. But I try to avoid running on an error intentionally. When logging to a compact table that stores data in an aggregate form, I used something like that: BEGIN; UPDATE ... ; if (!affected_rows) { INSERT ... ; if (error) { ROLLBACK; UPDATE ... ; } } COMMIT; I added the error check with a second UPDATE try after INSERT to increase accuracy. In fact, INSERTs were sometimes failing because of concurrency, and this was the only viable solution I found to avoid losing data. Best regards -- Matteo Beccati http://phpadsnew.com/ http://phppgads.com/
В списке pgsql-general по дате отправления: