J'essaie d'empêcher les utilisateurs de pouvoir supprimer irrévocablement des espaces dans un wiki Confluence. Ma première pensée rapide était de renommer la table spaces
en allspaces
, d'ajouter une nouvelle colonne deleted
, et de créer une vue spaces
à la place de l'ancienne table. La vue ne renvoie que des espaces non supprimés. J'ai créé trois règles pour autoriser INSERT, UPDATE et DELETE sur la vue spaces
. La règle DELETE modifie simplement le champ deleted
et le supprime donc de la vue, mais toutes les données restent dans la base de données.La valeur de retour de DELETE peut-elle être modifiée dans PostgreSQL
Le problème est maintenant les instructions DELETE sur spaces
renvoient DELETE 0
de PostgreSQL. Cela provoque Hibernate à renverser et lancer une exception et Confluence explose.
Y at-il un moyen de faire en sorte que les lignes de retour de PostgreSQL soient modifiées au lieu de lignes supprimées sur une règle INSTEAD?
Pourquoi vos utilisateurs ont-ils directement accès aux tables Confluence ?! –
Ils n'ont pas, Confluence a un bouton à l'intérieur "Supprimer l'espace" qui va supprimer l'espace de la base de données. Actuellement c'est permanent qui à mon humble avis est très anti-wiki. J'essaie de résoudre ce problème au niveau de la base de données. –