Bonjour,
J'ai une table "OP" proposant en résumé comme champs:
- Id
- Nom
- hoursMax, qui par défaut est null
J'ai une autre table de bons de commande "OP_BC":
- Id
- op_id -> ID de l'OP auquel il est lié
- hours
Lorsque je crée ou que je modifie un enregistrement de "OP_BC", je souhaiterais que le "heureMax" de OP se mette à jour en fonction.
Je crée un enregistrement dans OP_BC de 100h, je souhaites que heuresMax de l'OP correspondant prenne 100h de plus.
J'ai pour ça fait des triggers:
Code :
- CREATE TRIGGER `opbc_after_insert` AFTER INSERT ON `op_bc`
- FOR EACH ROW UPDATE
- op
- SET
- op.hoursMax = op.hoursMax + NEW.hours
- WHERE
- op.id = NEW.op_id
|
Code :
- CREATE TRIGGER `opbc_after_update` AFTER UPDATE ON `op_bc`
- FOR EACH ROW UPDATE
- op
- SET
- op.hoursMax = op.hoursMax - OLD.hours + NEW.hours
- WHERE
- op.id = NEW.op_id
|
Seul problème, c'est que le nombre d'heures est modifié uniquement si la valeur de "hoursMax" n'est pas égale à null. Si elle est à null alors rien n'est fait.
J'ai testé la requête en direct et ça m'a confirmé la chose: null+100 = null
Mettre hoursMax à 0 par défaut résout le problème mais avoir null m'arrange plus pour l'affichage ensuite, ça me fait une condition de moins à mettre s'il n'y a pas d'heures max renseignées. Sachant qu'en plus mettre la valeur "0" veut dire "0 heures max" et pas "pas d'heure renseignée".
Bref, comment puis-je résoudre ce problème?
Par avance merci!