Toon posts:

[postgresql] veld met waarde verhogen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hello,


Iemand enig idee of er een postgres functie bestaat waarmee ik kan zeggen dat een bepaald veld met een waarde moet verhogen.

Dus iets als:

update blah set getal=getal+2 where id=1;

Any idea ?

  • LionO
  • Registratie: Juni 2001
  • Laatst online: 02-12-2025
Ik denk dat je deze zoekt (autonummering bij records toevoegen), dit is er eentje voor een klantentabel, het aanpassen moet je zelf maar doen:
[begin block]

CREATE FUNCTION set_pkey_klanten_par() RETURNS OPAQUE AS '
DECLARE
tmprec integer;
BEGIN
-- Als er een record is in de tabel
SELECT MAX(klNr) INTO tmprec FROM klanten_par;
IF NOT tmprec IS NULL THEN
-- Haal de huidige maximale sleutel op en tel er 1 bij op
NEW.klNr:=tmprec+1;
ELSE
-- Anders sleutel op 1 zetten
NEW.klNr:=1;
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER set_pkey_klanten_par BEFORE INSERT ON klanten_par
FOR EACH ROW EXECUTE PROCEDURE set_pkey_klanten_par();

[end block]

Maar hetgeen je letterlijk bedoelt werkt als volgt:
[begin block]

CREATE FUNCTION plusone() RETURNS OPAQUE AS '
BEGIN
NEW.id:=OLD.id+1;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER set_plusone BEFORE INSERT OR UPDATE ON klanten_par
FOR EACH ROW EXECUTE PROCEDURE plusone();

[end block]

Ik hoop dat je er wat aan hebt. Maar wees gewaarschuwd dat deze laatste GEEN CONTROLES UITVOERD en dus niet bij sleutels gebruikt mag worden !

Another Stupid N00b ! Mijn machientje(s) PC Specs
"If it ain't broken, don't sell it", me ?


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Op zondag 21 april 2002 18:34 schreef FonZie het volgende:
Iemand enig idee of er een postgres functie bestaat waarmee ik kan zeggen dat een bepaald veld met een waarde moet verhogen.

Dus iets als:

update blah set getal=getal+2 where id=1;
Ten eerste hoort dit in [forum=14].
Ten tweede, wat is er mis met een update query?

Exact expert nodig?


  • Daan
  • Registratie: Februari 2000
  • Laatst online: 08-09 22:52
>> [forum=14].

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op zondag 21 april 2002 18:34 schreef FonZie het volgende:

Iemand enig idee of er een postgres functie bestaat waarmee ik kan zeggen dat een bepaald veld met een waarde moet verhogen.
Ik kan wel 5 manieren verzinnen, dus misschien is het handig als je uitlegt wat je wil.

Verwijderd

ik zelf zou denk ik gaan voor de manier van LionO. Aangezien die aardig flexibel is.

Als je gewoon een auto increment field wil hebben, gebruik dan type SERIAL. Let wel, oudere postgres versies ondersteunen geen bigint als serial. Wil je dat toch met een oudere versie, dan zit je weer vast aan de manier van LionO.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 april 2002 18:34 schreef FonZie het volgende:
Dus iets als:

update blah set getal=getal+2 where id=1;
En had je voor de grap die query al geprobeerd??
Op maandag 22 april 2002 09:16 schreef DarthRaider het volgende:
ik zelf zou denk ik gaan voor de manier van LionO. Aangezien die aardig flexibel is.
Het update statement zelf vind ik nog veel flexibeler.
Pagina: 1