Bonjour,
Je tourne sous Windows avec la version PostgreSQL 8.1.3.
J'explique mon problème
J'ai 2 bases de données situés sur le même serveur, qui contiennent chacune 1 table.
1 BDD bd_original avec une table "test" avec 1 champ "nom" de type varchar rien d'autres
1 2 3 4
| CREATE TABLE test
(
nom varchar
) |
1 BDD bd_sauvegarde avec une table "test_sauvegarde" avec 1 champ "nom_sauvegarde" de type varchar et un autre champ "date_sauvegarde" de type "TIMESTAMP".
1 2 3 4 5 6
|
CREATE TABLE test_sauvegarde
(
nom_sauvegarde varchar,
date_sauvegarde timestamp
) |
Je souhaite que lorsque j'ajoute un enregistrement dans "bd_original->table test", cet enregistrement soit recopié dans la base "bd_sauvegarde->table test_sauvegarde" grâce à un trigger.
La création du trigger ne m'a pas posé trop de problèmes, mais dans le cas où les 2 tables se trouvent sur la même base de données
Voici ma fonction et mon trigger pour "recopier des enregistrements d'une table à l'autre" avec les tables sur la même BD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| --Fonction exemple
CREATE OR REPLACE FUNCTION ma_fonction() RETURNS TRIGGER AS $je_sais_pas_quoi$
BEGIN
INSERT INTO test_sauvegarde(
test_sauvegarde,
date_sauvegarde)
VALUES (
NEW.test,
CURRENT_TIMESTAMP);
RETURN NULL;
END;
$je_sais_pas_quoi$ LANGUAGE plpgsql; |
1 2 3 4
| -- Trigger qui reprend la fonction
CREATE TRIGGER mon_trigger
AFTER INSERT ON test
FOR EACH ROW EXECUTE PROCEDURE ma_fonction(); |
Comment cela se passe-t-il si les 2 tables sont sur des bases de données différentes ? Est-ce qu'il faut se connecter à l'autre BD ? Comment ?
J'aimerais savoir cela pour me permettre "d'enregistrer les mouvements des utilisateurs" et je désire faire 2 bases de données pour une raison de sécurité...
encore une chose à propos de ma fonction, quelqu'une pourrait me dire à quoi sert la chaîne de caractères après AS, ce qui est entre $ ?
CREATE OR REPLACE FUNCTION ma_fonction() RETURNS TRIGGER AS $je_sais_pas_quoi$
Je vous remercie d'avance
Partager