From: | Chris Bitmead <chris(at)tech(dot)com(dot)au> |
---|---|
To: | Heinz Hemken <zotz(at)franchiseloan(dot)com> |
Cc: | pgsql-sql(at)postgreSQL(dot)org |
Subject: | Re: [SQL] variables in pgSQL? |
Date: | 1999-07-13 03:12:49 |
Message-ID: | 378AAEB1.D3EC3F0F@tech.com.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
CREATE SEQUENCE id_seq;
INSERT INTO masterindex_table(user_id, name) SELECT nextval('id_seq'),
'Mr Foo' from masterindex_table where 12345 not in (SELECT user_id from
masterindex_table);
This will create a new record in masterindex_table only if the id 12345
is not already existing. All in one SQL command!
Heinz Hemken wrote:
>
> The following is legal in MS SQL:
>
> declare @user_id int
> select @user_id = user_id from masterindex_table where masterindexid = 1
>
> whereupon the local variable can be used for other things. Is there
> anything similar in pgSQL? I want to have a user table for a web
> database, and I want to be able to do a begin/commit block where I 1)
> check to see if the user exists in an account table, 2) if not, get the
> next available userid from a master index table, 3) add a new userid to
> the account table for the new user, and 4) increment the userid field in
> the master index table. I want this to occur all within a single
> transaction block so that no race conditions exist, and the masterindex
> table is only being used by one process at a time for the whole
> operation.
>
> How can I do this in postgresql? Is there a better approach?
>
> --
> Heinz Hemken
> IFC Capital Corporation
> San Diego, C
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-07-13 05:05:47 | Re: [SQL] create temp table |
Previous Message | Heinz Hemken | 1999-07-13 02:41:54 | variables in pgSQL? |