Så længe du kun foretager ændringer i den række, der udløste triggeren, er det langt enklere (og billigere) at bruge en FØR OPDATERING
trigger, som kan foretage ændringer i new.complete_flag
før det gemmes i tabellen, i stedet for at skulle køre en OPDATERING
erklæring, efter at den allerede er derinde.
Du kan også begrænse triggeren til opdateringer af et bestemt felt med OPDATERING AF
OPRET TRIGGER
erklæring.
Slutresultatet ville se nogenlunde sådan ud:
CREATE FUNCTION completed_timestamp() RETURNS trigger AS $$
LANGUAGE plpgsql
BEGIN
IF new.complete_flag = 1 and old.completed_flag = 0 THEN
new.complete_time := current_timestamp;
END IF;
RETURN new;
END;
$$;
CREATE TRIGGER update_timestamp
BEFORE UPDATE OF completed_flag ON tbl_pXXXX
FOR EACH ROW
EXECUTE PROCEDURE completed_timestamp();