Re: concurrency problem

From: "Aaron Bono" <postgresql(at)aranya(dot)com>
To: "sathish kumar shanmugavelu" <sathishkumar(dot)shanmugavelu(at)gmail(dot)com>
Cc: "Ash Grove" <ash_grv7(at)yahoo(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: concurrency problem
Date: 2006-06-17 14:52:50
Message-ID: bf05e51c0606170752qf0efea6m7bd68be8c2d194ab@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

When in this situation I:

1. Wait until I have enough data to do a complete commit before even
bothering to save any data to the database. I want the life of my
transactions to last no more than milliseconds if possible.
2. Use a BIGSERIAL for the primary keys so the IDs are assigned
automatically through triggers and sequence IDs.
3. Do a "SELECT currval('my_sequence') AS seq_number;" to determine what ID
was assigned so I can use it on child tables.

-Aaron Bono

On 6/16/06, sathish kumar shanmugavelu <sathishkumar(dot)shanmugavelu(at)gmail(dot)com>
wrote:
>
> Dear group
> Its my mistake that i did not reveal the whole scenario.
> Actually within that begin and commit, i insert in 10 tables. The
> above said table is the key table.
> I fetch the consultatioin_no and add one to it, i should know this
> consultation_no to save the other 10 tables. because i use this number as
> foreign key in other tables. Also in my program, the data for that 10 tables
> are collected in different java classes and save coding is also there. I
> initiate this save coding for all the 10 forms in the one form (some main
> form).
> so if any error occurs i have to roll back the whole transaction.
>
> Is there any method to release the lock explicitly, where postgres
> store this locking information.
> Is both
> stmt.execute ("commit");
> con.commit();
> are both same. should i have to call con.commit() method after
> stmt.execute("commit")
>
> Now Iam also thinking to use sequence. but please clear the above
> doubts.
>
> --
> Sathish Kumar.S
> SpireTEK
>
>
> On 6/16/06, Ash Grove <ash_grv7(at)yahoo(dot)com> 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,?,?,?,?,?,?,?,?,?,?)
> >
> > You are only working on one table so you sholdn't have
> > to manage a transaction or deal with explicit locking.
> > Just let the database handle this for you with a
> > sequence. Your concurrency issues will disappear.
> >
> > 1) create a sequence:
> >
> > create sequence entry_no_sequence
> >
> >
> > 2) set the new sequence's value to your table's
> > current entry_no value (n):
> >
> > select setval('entry_no_sequence',n)
> >
> >
> > 3) recreate your table so that the entry_no will get
> > it's value from calling nextval() on your new
> > sequence:
> >
> > entry_no integer not null default
> > nextval('entry_no_sequence')
> >
> >
> > Thereafter, when an insert is made on your table, the
> > enry_no field will get its value from the sequence and
> > the sequence will be incremented. You would then drop
> > entro_no from your insert statement and it would
> > become something like:
> >
> > INSERT INTO rcp_patient_visit_monitor (
> > patient_id, visit_date, is_newpatient, visit_type,
> > is_medical, is_review,
> > is_labtest, is_scan, is_scopy, is_xray, weight,
> > height)
> > VALUES (?,current_timestamp,?,?,?,?,?,?,?,?,?,?)
> >
> >
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Daniel CAUNE 2006-06-17 15:16:13 Re: keeping last 30 entries of a log table
Previous Message sathish kumar shanmugavelu 2006-06-17 03:53:17 Re: concurrency problem