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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 $ ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE OR REPLACE FUNCTION ma_fonction() RETURNS TRIGGER AS $je_sais_pas_quoi$

Je vous remercie d'avance