phpcompta-contrib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Phpcompta-contrib] Question idiotes


From: Dany De Bontridder
Subject: Re: [Phpcompta-contrib] Question idiotes
Date: Fri, 20 Jan 2006 15:02:39 +0100

Stan Pinte writes:
On peut s'en sortir avec des constraints pour garantir la cohérence,
ou pas? (exemples sinon?)
Non pas toujours, par exemple, avec les metadonnées (voir les fiches) les
constraint ne peuvent faire les mêmes contrôles que des procédures
stockées.
En général on utilisera alors des triggers (qui pour des raisons de
réutilisabilités appelera des procédures stockées)

Par exemple aucun nouveau salaire ne peut être inférieur à une valeur
indiquée dans une table BAREME ni dépasser un certain plafond indiqué
aussi dans cette table, pour ce type de travail. Les CHECK doivent avoir les
valeurs en dur et ne peuvent donc pas regarder dans la table BAREME pour ce
travail-là quel est la valeur minimum, ni avoir de tests sur les
différentes valeurs en fonction du code de travail. Solution: on crée un
trigger (INSERT et UPDATE) qui compare la nouvelle valeur et la valeur dans
la table BAREME, ce trigger pourrait appeler des fonctions stockées qui
seraient utilisées ailleurs. Evidemment le salaire est négociable et 2
personnes n'ont pas le même mais toutes seront dans les limites données
par BAREME

Donc les anciens enregistrements ne sont pas affectés, les nouveaux biens.
La mise à niveau des anciens doit être manuelle (et dans ce cas-ci c'est
obligatoire) sinon un trigger dans BAREME pour modifier la table SALAIRE (si
possible, certaines db donneront un probleme de "circular trigger")

L'exemple n'est pas génial,  mais un cas plus réaliste serait un peu long
à exposer on devrait attaquer les métadonnées (voir fiche par exemple)
où malheureusement il y a un contrôle uniquement dans le code PHP au lieu
de postgres (parce que je n'osais pas utiliser des fonctions trop avancées
pour que le portage vers MySql reste possible)


@+,

D.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]