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 THENINSERT INTO table1 (field1, field2, field3)VALUES (variable1, variable2, variable3);
ELSEUPDATE table1 SET field1 = variable1, field2 = variable2, field3 = variable3WHERE primarykey =
primarykey_variable;
END IF;
-Josh Berkus
--
______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete
informationtechnology josh@agliodbs.com and data management solutions (415) 565-7293 for law firms, small
businesses fax 621-2533 and non-profit organizations. San Francisco