1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
--Fonction qui ajoute ou modifie les données dans une table de sauvegarde du schéma "schema_sauvegarde"
--lors d'un INSERT ou UPDATE
CREATE OR REPLACE FUNCTION fonction_insert_tb_x_sauv() RETURNS TRIGGER AS $corps_fonction$
--déclaration d'une variable text
DECLARE action_effectuee text;
BEGIN
--initialisation de la variable, elle aura pour valeur l'opération effectuée sur la table (TG_OP), INSERT, UPDATE ou DELETE
action_effectuee := TG_OP;
--si c'est 1 INSERT, alors on ajoute dans la table sauvegarde
IF action_effectuee = 'INSERT' THEN
INSERT INTO schema_sauvegarde.tb_x_sauv(
id_sauv,
nom_sauv,
date_sauv)
--on reprend les valeurs de la table auquelle on ajoute
VALUES (
NEW.id,
NEW.nom,
--on ajoute également l'heure et la date de l'insert
CURRENT_TIMESTAMP);
-- si c'est 1 UPDATE alors on modifie dans la table sauvegarde
ELSEIF action_effectuee = 'UPDATE' THEN
UPDATE schema_sauvegarde.tb_x_sauv
--on reprend les valeurs de la table auquelle on modifie
SET nom_sauv = NEW.nom,
--on ajoute également l'heure et la date de la modification
date_sauv = CURRENT_TIMESTAMP
--on peut mettre old ou new, ca ne change rien
WHERE id_sauv = OLD.id;
END IF;
-- la fonction ne retourne aucun résultat
RETURN NULL;
END;
$corps_fonction$ LANGUAGE plpgsql; |
Partager