Trigger returns et procedure
Bonjour,
J'ai du mal a comprendre la syntaxe et ce que je fais le trigger .
J ai numéro ci dessous ,
1- Pourquoi creer une fonction qui fait returns un trigger?On aurait pas pu créer un trigger directement par un create trigger?
2-Le return NEW retourne quoi exactement?
3 Je présume que c'est pour dire qu on utilise pl/sql
4-Quelle difference entre ce create TRIGGER et le returns trigger?
merci
Exemple
Code:
1 2 3 4 5 6
| CREATE TABLE emp (
nom_employe text,
salaire integer,
date_dermodif timestamp,
utilisateur_dermodif text
); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 1 - CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
BEGIN
-- Verifie que nom_employe et salary sont donnés
IF NEW.nom_employe IS NULL THEN
RAISE EXCEPTION 'nom_employe ne peut pas être NULL';
END IF;
IF NEW.salaire IS NULL THEN
RAISE EXCEPTION '% ne peut pas avoir un salaire', NEW.nom_employe;
END IF;
-- Qui travaille pour nous si la personne doit payer pour cela ?
IF NEW.salaire < 0 THEN
RAISE EXCEPTION '% ne peut pas avoir un salaire négatif', NEW.nom_employe;
END IF;
-- Rappelons-nous qui a changé le salaire et quand
NEW.date_dermodif := current_timestamp;
NEW.utilisateur_dermodif := current_user;
2- RETURN NEW;
END;
3-$emp_stamp$ LANGUAGE plpgsql;
4- CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); |