Så länge du bara gör ändringar i raden som aktiverade utlösaren, är det mycket enklare (och billigare) att använda en INNAN UPPDATERING trigger, som kan göra ändringar i new.complete_flag innan det sparas i tabellen, istället för att behöva köra en UPPDATERING uttalande efter att det redan finns där.
Du kan också begränsa triggern till uppdateringar av ett visst fält med UPPDATERING AV SKAPA TRIGGER
uttalande.
Slutresultatet skulle se ut ungefär så här:
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();