RSeif | Bonjour, j'ai la fonction suivante en PgSQL:
Code :
- create or replace FUNCTION verify_replicat(inet, varchar(128), timestamp with time zone) RETURNS integer
- AS $$
- DECLARE
- addr alias for $1;
- v_targetid alias for $2;
- v_tmstmp alias for $3;
- result integer;
- BEGIN
- insert into replicat(ip, targetid, tmstmp) values (addr, v_targetid, date_trunc('minute',current_timestamp));
- raise notice 'données inserées';
- select into result 1;
- RETURN result;
- EXCEPTION WHEN unique_violation THEN
- raise notice 'Détection de réplicat pour % à %', addr, date_trunc('minute', current_timestamp);
- select into result 0;
- RETURN result;
- end;$$
- LANGUAGE plpgsql;
|
SOn appel en C est le suivant:
Code :
- sprintf(commande_sql1,"select verify_replicat('%s', '%s', current_timestamp);", addr, targetid);
- result = PQexec(connect_database, commande_sql1);//result reçoit le résultat d'exécution de la commande_sql1 avec la BD
|
pour libérer la mémoire, je dois effacer les éléments de la tables périodiquement puisqu'elle ne sert qu'au test.
mais j'ai pa trouver de solution autre que faire un compteur en boucle.
savez vous une commande adéquate, et est-ce en C ou en PgSQl?
|