2010-09-14 3 views
1

J'ai un déclencheur pour mettre à jour mes horodatages pour chaque table. J'utiliser la fonction suivante:Est-il possible d'utiliser des variables pour accéder aux colonnes d'enregistrements dans le déclencheur postgresql?

CREATE OR REPLACE FUNCTION update_timstamp_table0() RETURNS TRIGGER AS 
$$ 
BEGIN 
IF NEW IS DISTINCT FROM OLD THEN 
    NEW.table0_timestamp_column = extract('epoch' from NOW()) 
    RETURN NEW; 
ELSE 
    RETURN NULL; 
END IF; 
END; 
$$ LANGUAGE 'plpgsql'; 

Comme toutes les colonnes d'horodatage ont des noms différents, je dois écrire une fonction pour chaque table.

Je voudrais faire quelque chose comme ceci:

CREATE OR REPLACE FUNCTION update_timstamp(timestamp_col_name varchar) RETURNS TRIGGER AS 
$$ 
BEGIN 
IF NEW IS DISTINCT FROM OLD THEN 
    NEW.(timestamp_col_name) = extract('epoch' from NOW()) 
    RETURN NEW; 
ELSE 
    RETURN NULL; 
END IF; 
END; 
$$ LANGUAGE 'plpgsql'; 

donc je peux utiliser la même fonction pour chaque déclenchement. Mais je ne connais pas la bonne syntaxe pour accéder à la colonne via une variable NEW.(timestamp_col_name).

Est-ce possible? et comment c'est fait?

Répondre

Questions connexes