Re: concurrency problem
От | Richard Huxton |
---|---|
Тема | Re: concurrency problem |
Дата | |
Msg-id | 44924F80.7060500@archonet.com обсуждение исходный текст |
Ответ на | concurrency problem ("sathish kumar shanmugavelu" <sathishkumar.shanmugavelu@gmail.com>) |
Список | pgsql-sql |
sathish kumar shanmugavelu wrote: > INSERT INTO rcp_patient_visit_monitor ( > entry_no, patient_id, visit_date, is_newpatient, > visit_type, is_medical, > is_review, is_labtest, is_scan, is_scopy, is_xray, > weight, height) > VALUES ((SELECT coalesce(max(entry_no)+1, 1) FROM > rcp_patient_visit_monitor),?,current_timestamp,?,?,?,?,?,?,?,?,?,?) > > The point to note here is the select statement which gets the max > entry_no and adds one to it and save the new value. entry_no is the primary > key of the above table. > > Now i run the same program (different instance) from two systems, save > the form simultaneously, only one entry is saved, in the other system the > error says - duplicate key violates. BEGIN; LOCK TABLE ... INSERT ... COMMIT; You'll need to handle possible errors where one client fails to get a lock and times out. It won't happen often, but you do need to consider the option. -- Richard Huxton Archonet Ltd
В списке pgsql-sql по дате отправления: