Thread: Concurrency problem

Concurrency problem

From
Taral
Date:
I have a small problem, and was wondering if there was a better fix than
the one I have.

Here goes: I have tables A and B, both with primary keys. A has a field
which refers to rows of B, and vice versa. When these fields are modified,
I want to ensure referential integrity, but without using triggers. Is it
possible to avoid deadlock and preserve integrity in all situations
without serializing the updates?

Details: Without any locking, an update of A concurrent with a delete on B
will cause an integrity breach. With locking, concurrent updates of A and
B can cause a deadlock...

Taral 



Re: [SQL] Concurrency problem

From
wieck@debis.com (Jan Wieck)
Date:
> I have a small problem, and was wondering if there was a better fix than
> the one I have.
>
> Here goes: I have tables A and B, both with primary keys. A has a field
> which refers to rows of B, and vice versa. When these fields are modified,
> I want to ensure referential integrity, but without using triggers. Is it
> possible to avoid deadlock and preserve integrity in all situations
> without serializing the updates?
>
> Details: Without any locking, an update of A concurrent with a delete on B
> will cause an integrity breach. With locking, concurrent updates of A and
> B can cause a deadlock...
   You  cannot  use  a  regular trigger because of your circular   dependency. What you really need to insure integrity
is  the   FOREIGN  KEY  support  coming  with 7.0. It is implemented as   triggers too, but they are handled a little
differentby  the   trigger  manager  and  their  execution  can be delayed until   COMMIT.
 


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#========================================= wieck@debis.com (Jan Wieck) #




Re: [SQL] Concurrency problem

From
Taral
Date:
On Fri, 4 Feb 2000, Jan Wieck wrote:

>     You  cannot  use  a  regular trigger because of your circular
>     dependency. What you really need to insure integrity  is  the
>     FOREIGN  KEY  support  coming  with 7.0. It is implemented as
>     triggers too, but they are handled a little different by  the
>     trigger  manager  and  their  execution  can be delayed until
>     COMMIT.

Does the CVS version have this support?

Taral



Re: [SQL] Concurrency problem

From
wieck@debis.com (Jan Wieck)
Date:
> On Fri, 4 Feb 2000, Jan Wieck wrote:
>
> >     You  cannot  use  a  regular trigger because of your circular
> >     dependency. What you really need to insure integrity  is  the
> >     FOREIGN  KEY  support  coming  with 7.0. It is implemented as
> >     triggers too, but they are handled a little different by  the
> >     trigger  manager  and  their  execution  can be delayed until
> >     COMMIT.
>
> Does the CVS version have this support?
   Mostly. Look at
       http://www.PostgreSQL.org/projects/
   to get a clue about the syntax. And follow the TODO link on
       http://www.PostgreSQL.org/~wieck/
   to see what we still need to fix/finish until BETA.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#========================================= wieck@debis.com (Jan Wieck) #