Re: [GENERAL] PLSQL Question regarding multiple inserts

2004-06-08 Thread Martijn van Oosterhout
On Wed, Feb 25, 2004 at 04:11:37AM +, Humble Geek wrote:
> Assume XXX is the id from the first insert. How do I get that number? Not
> currval('someSeq') -  'cause someone else may have performed an insert - but
> the id for that specific insert.

Read the documentation carefully, currval() does what you want, it
isn't affected by concurrent inserts.

-- 
Martijn van Oosterhout   <[EMAIL PROTECTED]>   http://svana.org/kleptog/
> If the Catholic church can survive the printing press, science fiction
> will certainly weather the advent of bookwarez.
>http://craphound.com/ebooksneitherenorbooks.txt - Cory Doctorow


pgpfvXJn9NvU2.pgp
Description: PGP signature


Re: [GENERAL] PLSQL Question regarding multiple inserts

2004-02-28 Thread Humble Geek
Thanks Greg.

That does help me some, however, I am stuck with this database (I have
inherited) - it has over a hundred tables, and while I may look into
converting it at some point, it is just unfeasible at this junction. So
where can I look to find the hard way? :)

HG


"Greg Patnude" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> That's the hard way
>
> You'd be better off redefining your table structures so that postgreSQL
> handles the primary keys automatically...
>
> CREATE TABLE test (
>
> id integer primary key not null default nextval('test_seq'),
> log varchar(32) NOT NULL,
> message text
>
> ) WITH OIDS;
>
> Using this type of table def will automatically create the sequence for
> you -- and always ge thte next value when you do an insert -- ensuring
that
> you dont have duplicate...
>
> so you would:
>
> INSERT INTO test ('log', 'message');
>
> then
>
> SELECT * FROM test;
>
> would give you
>
> id, log and message.
>
>
>
> -- 
> Greg Patnude / The Digital Demention
> 2916 East Upper Hayden Lake Road
> Hayden Lake, ID 83835
> (208) 762-0762
>
> "Humble Geek" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> > Hi all. Quick and perhaps silly question, but...
> >
> > I am using Pg 7.3. I am writing a function using pgplsql. This function
> will
> > perform multiple inserts. Let's say two of the inserts are as follows:
> >
> > -- id is primary key
> > insert into users (id, username) values (nextval('someSeq'),'somename');
> >
> > -- id is also a PK
> > insert into log (id, uid, message) values
> (nextval('someOtherSeq'),XXX,'New
> > Account');
> >
> > Assume XXX is the id from the first insert. How do I get that number?
Not
> > currval('someSeq') -  'cause someone else may have performed an insert -
> but
> > the id for that specific insert.
> >
> > Thanks,
> >
> > HG
> >
> > PS: Sorry for the cross-post...
> >
> >
>
>



---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


[GENERAL] PLSQL Question regarding multiple inserts

2004-02-28 Thread Humble Geek
Hi all. Quick and perhaps silly question, but...

I am using Pg 7.3. I am writing a function using pgplsql. This function will
perform multiple inserts. Let's say two of the inserts are as follows:

-- id is primary key
insert into users (id, username) values (nextval('someSeq'),'somename');

-- id is also a PK
insert into log (id, uid, message) values (nextval('someOtherSeq'),XXX,'New
Account');

Assume XXX is the id from the first insert. How do I get that number? Not
currval('someSeq') -  'cause someone else may have performed an insert - but
the id for that specific insert.

Thanks,

HG

PS: Sorry for the cross-post...



---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [GENERAL] PLSQL Question regarding multiple inserts

2004-02-28 Thread Greg Patnude
That's the hard way

You'd be better off redefining your table structures so that postgreSQL
handles the primary keys automatically...

CREATE TABLE test (

id integer primary key not null default nextval('test_seq'),
log varchar(32) NOT NULL,
message text

) WITH OIDS;

Using this type of table def will automatically create the sequence for
you -- and always ge thte next value when you do an insert -- ensuring that
you dont have duplicate...

so you would:

INSERT INTO test ('log', 'message');

then

SELECT * FROM test;

would give you

id, log and message.



-- 
Greg Patnude / The Digital Demention
2916 East Upper Hayden Lake Road
Hayden Lake, ID 83835
(208) 762-0762

"Humble Geek" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hi all. Quick and perhaps silly question, but...
>
> I am using Pg 7.3. I am writing a function using pgplsql. This function
will
> perform multiple inserts. Let's say two of the inserts are as follows:
>
> -- id is primary key
> insert into users (id, username) values (nextval('someSeq'),'somename');
>
> -- id is also a PK
> insert into log (id, uid, message) values
(nextval('someOtherSeq'),XXX,'New
> Account');
>
> Assume XXX is the id from the first insert. How do I get that number? Not
> currval('someSeq') -  'cause someone else may have performed an insert -
but
> the id for that specific insert.
>
> Thanks,
>
> HG
>
> PS: Sorry for the cross-post...
>
>



---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org