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