Re: mysql replace in postgreSQL?
От | Kostas Maistrelis |
---|---|
Тема | Re: mysql replace in postgreSQL? |
Дата | |
Msg-id | 436330F4.3000909@ath.forthnet.gr обсуждение исходный текст |
Ответ на | mysql replace in postgreSQL? (blackwater dev <blackwaterdev@gmail.com>) |
Список | pgsql-general |
blackwater dev wrote: >In MySQL, I can use the replace statement which either updates the >data there or inserts it. Is there a comporable syntax to use in >postgreSQL? > >I need to do an insert and don't want to have to worry about if the >data is already there or not...so don't want to see if it there, if so >do update if not insert...etc. > > look this functions.. is not general solution.. CREATE TYPE mydata AS ( f1 integer , f2 integer, ); CREATE OR REPLACE FUNCTION updatefoo(data mydata, myid bigint) RETURNS boolean AS $$ DECLARE BEGIN update foo_table set f1 = mydata.f1, f2 = mydata.f2 WHERE id = myid; IF NOT FOUND THEN return false; END IF; return true; END $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION insertfoo(data mydata, myid bigint) RETURNS boolean AS $$ DECLARE rep boolean DEFAULT false; BEGIN insert into foo_table ( id , f1, f2 ) values ( mydata.id, mydata.f1, mydata.f2 ); return rep; END $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION replaceFoo(data mydata, myid bigint) RETURNS boolean AS $$ DECLARE rep boolean = false; BEGIN rep = updatefoo(mydata,myid ); if not rep then rep = insertfoo(mydata,myid ); end if; return rep; END $$ LANGUAGE plpgsql;
В списке pgsql-general по дате отправления: