j'ai cette simple fonction plpgsql:Postgresql Triggers: passer d'après à avant le déclenchement DonT feu
CREATE FUNCTION "update_times"() RETURNS trigger AS '
BEGIN
NEW.update_time = NOW();
RETURN NEW;
END;'
LANGUAGE "plpgsql";
--The trigger:
CREATE TRIGGER test_update_time BEFORE UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times();
et cela fonctionne bien, mais seulement avec des déclencheurs AVANT ...
Je prefern au feu le déclencheur après la mise à jour, donc j'ai changé la fonction et le déclencheur lui-même comme:
CREATE FUNCTION "update_times_after"() RETURNS trigger AS '
BEGIN
OLD.update_time = NOW();
RETURN OLD;
END;'
LANGUAGE "plpgsql";
--The trigger:
CREATE TRIGGER test_update_time_after AFTER UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times_after();
Mais le aPRÈS déclencheur ne fonctionnent pas (le le déclencheur ne tire pas ou la fonction échoue).
Qu'est-ce que je fais mal?
Oui mais je veux mettre à jour le champ 'update_time' quand la mise à jour sql a été exécutée et que les données ont été sauvegardées ... – Strae
Je ne sais pas si je comprends. Et quelle est la différence entre avant et après dans ce cas? Quoi qu'il en soit - si vous voulez modifier la ligne en cours d'enregistrement sur la table, cela doit être fait dans le déclencheur BEFORE. –
Ops .. désolé mon mauvais, j'ai mal lu la documentation .. je pensais que le déclencheur BEFORE a été déclenché avant la mise à jour de la ligne, donc si la requête échoue, le déclencheur serait déclenché de toute façon. Ma faute. – Strae