Thread: Error Trapping -duplicate keys

Error Trapping -duplicate keys

From
"Steven D. Smith"
Date:
Help:

I'm using Perl to insert data from a log file, what I am doing is this
(Pseudocode):

If NOT (INSERT INTO myTABLE)
THEN UPDATE myTABLE
endIf

Now the code I have works except I get a console message:

      DBD::Pg::st execute failed: ERROR:  Cannot insert a duplicate key
into unique index visitor_pkey at ./inslog.pl line 147, <> chunk 4.

So, my question is how to I trap this error, keep it from being display as
it is not really an error if the insert fails?


Many thanks!

S. Douglas Smith Sr.
-------------------------------------------------------------------------------------------------

"Simplicity is the most difficult thing to secure in this world; it is the
last limit of experience, and the last effort of genius." George Sand





Re: Error Trapping -duplicate keys

From
Ludwig Lim
Date:
Steven:

Try using a
   select count(*)
   from <table>
   where <field of the primary key>=<key to be
inserted>.

 to check the count of the data.
  if count is zero insert else update.

--- "Steven D. Smith" <sds07@health.state.ny.us>
wrote:
> Help:
>
> I'm using Perl to insert data from a log file, what
> I am doing is this
> (Pseudocode):
>
> If NOT (INSERT INTO myTABLE)
> THEN UPDATE myTABLE
> endIf
>
> Now the code I have works except I get a console
> message:
>
>       DBD::Pg::st execute failed: ERROR:  Cannot
> insert a duplicate key
> into unique index visitor_pkey at ./inslog.pl line
> 147, <> chunk 4.
>
> So, my question is how to I trap this error, keep it
> from being display as
> it is not really an error if the insert fails?


ludwig.



__________________________________________________
Do You Yahoo!?
Sign up for SBC Yahoo! Dial - First Month Free
http://sbc.yahoo.com



Re: Error Trapping -duplicate keys

From
Tom Lane
Date:
Ludwig Lim <lud_nowhere_man@yahoo.com> writes:
>   if count is zero insert else update.

Alternatively, try updating first, and if you see zero rows updated
then insert.  Which one will be faster depends on whether you expect
insert or update to be the typical case.

            regards, tom lane