Re: INSERT [IGNORE] INTO TABLE

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Najm Hashmi <najm(at)mondo-live(dot)com>
Cc: Edmar Wiggers <edmar(at)brasmap(dot)com>, "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: INSERT [IGNORE] INTO TABLE
Date: 2000-11-02 03:38:54
Message-ID: 200011020338.WAA11211@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

The proper fix for this is subtransactions, which we will have someday.
You do the INSERT in a subtransaction.

> Edmar Wiggers wrote:
>
> > > If I try to insert some row which in the table already exist the
> > > postgre don't insert it and tell some error. Everything ok.
> > > I'll insert only if there is not the same (same key) record,
> > > else don't insert and don't tell me errors about it.
> > > In MySQL is a switch [IGNORE].
> >
> > Not a good feature for me. What do you do if the record already exists?
> > Update it?
> >
> > Check existence and then insert or update. If you want, I guess you could
> > wrap that inside a stored procedure.
>
> Hi, here is an example of using function using pl/pgsql for inserting and
> checking whether an instance exists or not.....
> CREATE FUNCTION add_new_user(text,text) RETURNS bool AS' DECLARE
> oldUser RECORD;
> USR ALIAS FOR $1;
> PWORD ALIAS FOR $2;
>
> BEGIN
> SELECT INTO oldUser *
> FROM users
> where username=USR AND password= PWORD;
> IF FOUND
> THEN
> RETURN ''f'';
> ELSE
> INSERT INTO USERS(username,password)
> values(USR,PWORD);
> RETURN ''t'';
> END IF;
>
> END;'
> LANGUAGE 'plpgsql';
>
> Regards.
> Najm
>
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Marc Rohloff 2000-11-02 07:11:50 Re: Outer Joins
Previous Message Petter Reinholdtsen 2000-11-02 02:13:59 Timespan / interval calculations?