Thread: Re: [GENERAL] v6.5 foreign key trigger reposted with details

Re: [GENERAL] v6.5 foreign key trigger reposted with details

From
"amy cheng"
Date:
hi, Vadim,

    (sorry, Vadim, I used "reply" to "vadim@krs.ru", but I mean
      pgsql-general@postgreSQL.org )

I use postgresql as the backend of a website using cgi(in perl/DBI).
so,


>Note that if in any time only one application will update
>primary/foreign tables then you can forget all above, don't
>worry about RELEASE NOTES and be happy -:)
A) I can not be happy ;-(


>But if example above is case for you then:
>
>1. all applications should use BEGIN/END;
B) what does that mean for perl? or just limited to PL/pgSQL--
    then, isn't BEGIN/END the common syntax in PL/pgSQL?

C) can you give me an outline of PL/pgSQL for 2. and 3. ?
>2. in first transaction (deleting/updating something in primary table)
>    you have to execute LOCK _primary_table_ IN SHARE ROW EXCLUSIVE MODE
>    _before_ execution of any update/delete statement for the
>    primary table;
>3. in second transaction (inserting/updating something in foreign
>    table) you have to execute LOCK _primary_table_ IN SHARE MODE
>    _before_ execution of any insert/update statement for the
>    foreign table.
>

D) I'm not sure yet ALL those can be handled by PS/pgSQL within the
   postgresql? I do not need to handle all of them in perl through
   dbi? If I do, how? and, can I just disable the concurrent
   multiversion in V6.5?

Thanks!!!

Kai



_______________________________________________________________
Get Free Email and Do More On The Web. Visit http://www.msn.com

Re: [GENERAL] v6.5 foreign key trigger reposted with details

From
Vadim Mikheev
Date:
amy cheng wrote:
>
> >1. all applications should use BEGIN/END;
> B) what does that mean for perl? or just limited to PL/pgSQL--
>     then, isn't BEGIN/END the common syntax in PL/pgSQL?
>
> C) can you give me an outline of PL/pgSQL for 2. and 3. ?
> >2. in first transaction (deleting/updating something in primary table)
> >    you have to execute LOCK _primary_table_ IN SHARE ROW EXCLUSIVE MODE
> >    _before_ execution of any update/delete statement for the
> >    primary table;
> >3. in second transaction (inserting/updating something in foreign
> >    table) you have to execute LOCK _primary_table_ IN SHARE MODE
> >    _before_ execution of any insert/update statement for the
> >    foreign table.
> >
>
> D) I'm not sure yet ALL those can be handled by PS/pgSQL within the
>    postgresql? I do not need to handle all of them in perl through
>    dbi? If I do, how? and, can I just disable the concurrent

LOCKs can't be handled by PL/pgSQL - you have to execute
LOCKs from your application _before_ update statements.
Turn autocommit off to execute LOCKs and update statements
in one transaction (dbi will use BEGIN/END arround
your statements).

>    multiversion in V6.5?

No way.

Vadim