Versio

[pgSQL] Waarde toekennen mbv trigger

Overzicht Reageren

Storeman storeman

storeman storeman

13/04/2008 20:40:00
Quote Anchor link
Ik ben eens serieus in postgresql aan het duiken en begin mijn web stap voor stap te vinden. In diverse tutorials kwam ik functions (procedurs) en triggers tegen, lijkt mij ideaal om te gebruiken voor dingen die je niet in je code af wil vangen.

Zo ook de mogelijkheid om bij te houden wanneer een record gecreerd of geupdate wordt. Ik weet dat ik mbv een trigger een pgSql functie aan kan roepen. De functie aanroepen lijkt me an sich nog niet zo'n probleem, echter de functie zelf lukt me nog niet helemaal.

Deze functie wordt door pgAdminIII niet goedgekeurd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
CREATE FUNCTION holiday.update_changed() RETURNS holiday.notes AS
$BODY$BEGIN
    IF( TG_OP = 'UPDATE' ) THEN
        NEW.changed := now();
        RETURN NEW;
    END IF;

END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION holiday.update_changed() OWNER TO [eigenaar];


Ik wil dus de waarde van een veld in de gewijzgide rij veranderen naar de huidige datum (timestamp-veld).

Anyone? pgFrank?

EDIT:

Kan dit een algemene functie worden of moet voor iedere tabel een nieuwe functie worden aangemaakt, of kan het misschien ook zonder functie maar direct in de trigger?
Gewijzigd op 01/01/1970 01:00:00 door Storeman storeman
 
PHP hulp

PHP hulp

25/05/2012 10:02:59
Gesponsorde koppelingen:
 
Klaasjan Boven

Klaasjan Boven

13/04/2008 20:57:00
Quote Anchor link
http://www.techonthenet.com/oracle/triggers/after_update.php is met oracle maar zoiets zal er ook wel voo PGSQL zijn

http://archives.postgresql.org/pgsql-bugs/2004-07/msg00196.php
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Frank -

Frank -

13/04/2008 23:34:00
Quote Anchor link
De functie zal een TRIGGER moeten returnen, daar is hier geen sprake van. Daarnaast moet je volgens mij een NULL retourneren wanneer er geen NEW retour komt.

Probeer deze eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
CREATE FUNCTION holiday.update_changed() RETURNS trigger AS
$BODY$
BEGIN
    IF( TG_OP = 'UPDATE' ) THEN
        NEW.changed := now();
        RETURN NEW;
    END IF;

    RETURN NULL; -- eventueel in een ELSE zetten, probeer het eens uit.
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;


Zie verder de handleiding, die is onmisbaar bij dit soort zaken.
 



Overzicht Reageren

Get Adobe Flash player