pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jonathan Gardner <jgardner@jonathangardner.net>
To: Anagha Joshi <ajoshi@nulinkinc.com>
Cc: pgsql-admin@postgresql.org
Cc: pgsql-sql@postgresql.org
Subject: Re: Latest transcation
Date: Fri, 20 Jun 2003 06:43:18 -0700
Message-ID: <200306200643.37298.jgardner@jonathangardner.net> (raw)
In-Reply-To: <FF851C7EEB75954F9BCFB5CA117AB1EC092832@delta.nulinkinc.com>
References: <FF851C7EEB75954F9BCFB5CA117AB1EC092832@delta.nulinkinc.com>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Friday 20 June 2003 01:27, Anagha Joshi wrote:
> Yes...I'm aware of that and have tried also by maintaining extra table.
> But how to to the following:
> 1.	If insertion takes place, I want to return to the client the
> values (with field names of course)	which are inserted into the
> tables. In each case table might be different.
>

When you insert a single row, PostgreSQL returns the OID of that row. Just 
follow up with a select (SELECT * FROM <your table> WHERE OID=<the oid>) and 
you'll get all the info you need.

> 2.	If modification takes places, I want to know the values which
> are modified with field names and return them to the client.
>

You can do that by checking what is different between the data you inserted 
and the data you get from the select statement.

> More precisely,
> My C++ client --
> '
> '
> "
> 	Transcation begin
> 		insert/update query to the backend is fired.
> 			//control is tranferred to the trigger
> 		//After trigger procedure is executed, I want at this
> point the values inserted/modified so 		//as to pass them back
> 	Transcation end
> '
> '
>

I don't think it can work the way you would like it. Try this algorithm.

For insert:
1. Insert query is run. (Trigger, other table inserts/updates performed)
2. With the OID from the insert, select the data.

For Update:
1. Update query is run. (Triggers, etc, are run as well).
2. With the OID (or Primary Key), select the data you just updated.

You can turn these two procedures into a stored procedure pretty easily. This 
way, all you do is call a stored procedure, and it will pass back all the 
data you need. You get a free transaction block inside the stored procedure 
as well.

- -- 
Jonathan Gardner <jgardner@jonathangardner.net>
(was jgardn@alumni.washington.edu)
Live Free, Use Linux!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+8w95WgwF3QvpWNwRAsVgAKCu48FN0VkRvXc9a2d9Qc91YU6jaQCdG4h4
kH42h4oWrsh1f1Splm0KNkA=
=zOMj
-----END PGP SIGNATURE-----



view thread (4+ messages)

Message-ID: <200306200643.37298.jgardner@jonathangardner.net>
Permalink:  ../200306200643.37298.jgardner@jonathangardner.net/
Also on:    postgresql.org/message-id/200306200643.37298.jgardner@jonathangardner.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: jgardner@jonathangardner.net, ajoshi@nulinkinc.com, pgsql-admin@postgresql.org
  Subject: Re: Latest transcation
  In-Reply-To: <200306200643.37298.jgardner@jonathangardner.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox