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();