Bonjour à tous.
J'ai une table contenant une colonne "accusé de réception" sous la forme d'un json :
Le principe est le suivant : A, B et C sont des clients qui viennent positionner leurs accusés de réception spécifiques lors de la récupération de la 'valeur'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 WITH T AS ( SELECT 1 AS id, '{"A":"NULL","B":"NULL","C":"NULL"}' AS accuse, 1234 valeur UNION SELECT 2, '{"A":"2015-06-02","B":"NULL","C":"NULL"}', 5678 UNION SELECT 3, '{"A":"2015-06-01","B":"2015-06-02","C":"2015-06-03"}', 1011 ) SELECT id, accuse::json, valeur into tmp_json FROM T; SELECT * FROM tmp_json;
Si une ligne a été lue par tous les clients, elle est candidate à la purge.
Lors de la purge, je dois supprimer toutes les lignes :
- qui ont été lues par tous les clients : WHERE position('NULL' IN accuse::TEXT) = 0 (ici seule la ligne avec la valeur 1011 est "purgeable")
et- dont le MAX des accusés de réception ("2015-06-03") est strictement inférieur à la date du jour : AND .... Là je sèche !!!
Une idée pour résoudre ce problème ?
Merci d'avance
Partager