insert on duplicate update?

Started by Peter Filipovover 20 years ago5 messagesgeneral
Jump to latest
#1Peter Filipov
pfilipov@netissat.bg

hi,
is there in postgres anything similar to:
insert .... on duplicate update?
here is the problem i need a solution for:
I need to insert in pg_type a row which was previously selected from there
and
with slight modifications, the problem is that when i try to insert the row
there might be a row with the same 'typname' which is sort of primary key.
The second problem is that when doing those operations i don't want to
depend
on the specific structure of the pg_type catalog. I want my procedure
to work even if in some future release additional columns to pg_type are
added.
So what i want is to insert a row in a table that was previously selected
from the same
table but if there is primary key collision i want to update the row that
collided. And
all these without being dependant on the table structure.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/

#2Martijn van Oosterhout
kleptog@svana.org
In reply to: Peter Filipov (#1)
Re: insert on duplicate update?

On Wed, Nov 09, 2005 at 01:31:59PM +0200, Peter Filipov wrote:

hi,
is there in postgres anything similar to:
insert .... on duplicate update?
here is the problem i need a solution for:
I need to insert in pg_type a row which was previously selected from there
and

<snip>

What's wrong with CREATE TYPE?

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#3Richard Huxton
dev@archonet.com
In reply to: Peter Filipov (#1)
Re: insert on duplicate update?

Peter Filipov wrote:

hi,
is there in postgres anything similar to:
insert .... on duplicate update?
here is the problem i need a solution for:
I need to insert in pg_type a row which was previously selected from
there and
with slight modifications, the problem is that when i try to insert the row
there might be a row with the same 'typname' which is sort of primary key.
The second problem is that when doing those operations i don't want to
depend
on the specific structure of the pg_type catalog.

Are you certain it will always be safe to do this?

How will you provide meaningful values for columns you don't know exist?

--
Richard Huxton
Archonet Ltd

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Richard Huxton (#3)
Re: insert on duplicate update?

Richard Huxton <dev@archonet.com> writes:

Peter Filipov wrote:

is there in postgres anything similar to:
insert .... on duplicate update?
here is the problem i need a solution for:
I need to insert in pg_type a row which was previously selected from
there and
with slight modifications, the problem is that when i try to insert the row
there might be a row with the same 'typname' which is sort of primary key.
The second problem is that when doing those operations i don't want to
depend
on the specific structure of the pg_type catalog.

Are you certain it will always be safe to do this?

What makes you think that modifying pg_type directly is a sane idea in
the first place? When (not if) it breaks, you'll not get a lot of sympathy.

regards, tom lane

#5codeWarrior
gpatnude@hotmail.com
In reply to: Peter Filipov (#1)
Re: insert on duplicate update?

You absolutely should NOT I repeat NOT -- DON'T dink around with the system
catalogs in ANY database... If you need to create UDT's then you should
follow the proper mechanisms to create your own user-defined types...

""Peter Filipov"" <pfilipov@netissat.bg> wrote in message
news:opszy0zlg8ligf9v@draco...

Show quoted text

hi,
is there in postgres anything similar to:
insert .... on duplicate update?
here is the problem i need a solution for:
I need to insert in pg_type a row which was previously selected from there
and
with slight modifications, the problem is that when i try to insert the
row
there might be a row with the same 'typname' which is sort of primary key.
The second problem is that when doing those operations i don't want to
depend
on the specific structure of the pg_type catalog. I want my procedure
to work even if in some future release additional columns to pg_type are
added.
So what i want is to insert a row in a table that was previously selected
from the same
table but if there is primary key collision i want to update the row that
collided. And
all these without being dependant on the table structure.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq