Re: mysql's "replace into..."

From: Josh Berkus <josh(at)agliodbs(dot)com>
To: "Diehl, Jeffrey" <jdiehl(at)sandia(dot)gov>
Cc: "'pgsql-sql(at)postgreSQL(dot)org'" <pgsql-sql(at)postgreSQL(dot)org>
Subject: Re: mysql's "replace into..."
Date: 2001-02-28 19:56:36
Message-ID: 3A9D57F4.E85E3E6E@agliodbs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Jeff,

> I'm in the process of migrating a production database and related
> applicatoins from mysql to postgresql. I've just not been very impressed
> with mysql's stability, that is I'm trying to make my phone stop ringing.

Surprising. I have a number of gripes with MySQL (of which REPLACE INTO
is one), but stability isn't one of them.

> However, when I wrote the applications, I took free advantage of mysql's
> replace into feature which behaves like a smart insert that inserts new
> records or updates old records. I'm using perl DBI and need to figure out a
> good way to migrate this to postgresql.
>
> Any ideas?

Well, you have two choices. One is to get used to standard SQL and use
the SQL I will expound below. The other is to actually hire a C
programmer to modify the PostgreSQL source to support Replace Into.
Great Bridge might be willing to help.

Regardless, your SQL functionality requires the following steps:

1. All tables involved *must* have primary keys. I reccommend against
using the OID for this purpose for several reasons; see the archives for
a discussion.

2. Build an if-then stucture for your update calls, that goes like this
(this assumes that your primary key is SERIAL):

IF primarykey_variable = 0 THEN
INSERT INTO table1 (field1, field2, field3)
VALUES (variable1, variable2, variable3);
ELSE
UPDATE table1 SET field1 = variable1,
field2 = variable2,
field3 = variable3
WHERE primarykey = primarykey_variable;
END IF;

-Josh Berkus

--
______AGLIO DATABASE SOLUTIONS___________________________
Josh Berkus
Complete information technology josh(at)agliodbs(dot)com
and data management solutions (415) 565-7293
for law firms, small businesses fax 621-2533
and non-profit organizations. San Francisco

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Diehl, Jeffrey 2001-02-28 20:40:37 RE: mysql's "replace into..."
Previous Message George Young 2001-02-28 19:30:07 plpgsql notify trigger