PostGIS triggerfunktioner och triggers

Tips PostGIS triggerfunktioner och triggers

Dessa kan vara användbara i många fall. En triggerfunktion är en exekvering som utförs automatiskt i samband med en händelse i databasen, . En trigger är händelsen som utlöser triggerfunktionen, t ex när man skriver i en tabell. Ett användbart exempel är om man vill registrera tidpunkten för när ett objekt skapas och/eller redigeras. De kan också användas om man vill skapa en backup av objektet i en annan tabell innan det redigeras (inga kodexempel på detta ännu).

SQL kodexempel triggerfunktioner

Nedan två exempel på triggerfunktioner för att sätta tidpunkten när objektet (raden) skapas (och därmed också "revideras" om man så vill ha det så) respektive när objektet förändras (revideras).

insert_skapaddat_revdat

BEGIN
NEW.skapaddat = now();
NEW.revdat = now();
RETURN NEW;
END;

update_revdat

BEGIN
IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
NEW.revdat = now();
RETURN NEW;
ELSE
RETURN OLD;
END IF;
END;

När triggerfunktionerna är skapade kan man knyta dem till triggers från önskade tabeller i schemat. Notera att datumfälten måste ha samma namn som definerats i triggerfunktionerna (t ex skapaddat resp revdat) och ha datatypen timestamp (förslagsvis med with time zone).

SQL kodexempel triggers

insert_skapaddat_revdat_mintabell

CREATE TRIGGER insert_skapaddat_revdat_mintabell
BEFORE INSERT
ON mittschema.mintabell
FOR EACH ROW
EXECUTE FUNCTION mittschema.insert_skapaddat_revdat();

update_revdat_mintabell

CREATE TRIGGER update_revdat_mintabell
BEFORE UPDATE
ON mittschema.mintabell
FOR EACH ROW
EXECUTE FUNCTION mittschema.update_revdat();

Artikeldetaljer

Artikel-ID:
24
Betyg :