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?