Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PSQL] sostituire ON DUPLICATE KEYS

0 views
Skip to first unread message

Spike

unread,
Aug 31, 2008, 4:29:00 PM8/31/08
to
Salve a tutti,
sto' convertendo un database MySql in PSQL %-)
CDO sono arrivate le prime difficolta',

considerando che in caso di update:
1- non devo aggiornare tutti i campi
2- tabella_id_seq non si deve incrementare

con le mie poche conoscenze, sono arrivato a questa funzione:
DECLARE
contatore int4;
BEGIN
UPDATE tabella SET
campo1=NEW.campo1,
campo2=NEW.campo2,
WHERE campo3=NEW.campo3
IF FOUND THEN
SELECT INTO contatore nextval('tabella_id_seq');
contatore := contatore-1;
SELECT SETVAL ('tabella_id_seq',contatore,false);
RETURN NULL;
ELSE
RETURN NEW;
END IF;
END;


a cui segue:
CREATE TRIGGER insert_update_tabella BEFORE INSERT ON tabella
FOR EACH ROW EXECUTE PROCEDURE insert_update_tabella()

a questo punto la prima domanda, in poche parole...questo codice fa' schifo?
c'e' un sistema migliore (magari anche piu' elegante) per mantenere i
due requisiti ?

come seconda domanda,
un consiglio per un buon libro in italiano su PSQL. ;-)

Ciao e grazie per l'attenzione.

0 new messages