From: | "Diehl, Jeffrey" <jdiehl(at)sandia(dot)gov> |
---|---|
To: | "'Josh Berkus '" <josh(at)agliodbs(dot)com>, "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 20:40:37 |
Message-ID: | B51F0C636E578A4E832D3958690CD73E0130BE4C@es04snlnt |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Thanx for your help. I found replace into to be a nice convience since my
primary keys are often expressions build from several fields which I want to
keep unique. Replace into enforces this uniqueness. I was learning SQL
when I started this project so I didn't know this was non-standard. Bummer.
But since my primary keys are expressions, I can't use the technique you
suggested. I'm thinking of simply trying the insert and checking to see if
I get an error. If I get an error, I do an update... Not sure how well
this will work, tho.
Any suggestions?
Thanx for your time.
-----Original Message-----
From: Josh Berkus
To: Diehl, Jeffrey
Cc: 'pgsql-sql(at)postgreSQL(dot)org'
Sent: 2/28/01 12:56 PM
Subject: Re: [SQL] mysql's "replace into..."
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
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2001-02-28 22:06:12 | Re: mysql's "replace into..." |
Previous Message | Josh Berkus | 2001-02-28 19:56:36 | Re: mysql's "replace into..." |