oracle et les plages.....de dates - SQL/NoSQL - Programmation
MarshPosté le 03-09-2008 à 16:49:21
bonjour,
voila mon probleme: j'ai une table sous oracle 9i
table plafonds date_debut date date_fin date matricule number(5)
A l'insertion et à l'update je dois controller qu'il n'y a pas de periodes de dates chevauchantes pour un meme matricule:
ex: on ne veux pas date_debut date_fin matricule 01/01/2008 01/12/2008 33155 01/01/2007 01/02/2008 33155
mais date_debut date_fin matricule 01/01/2008 01/12/2008 33155 01/01/2007 01/02/2007 33155 est correct.
le probleme c'est que sur les triggers de niveau row il y a le mutating
et si je passe par une table temporaire je n'ai pas acces au login de l'utilisateur (login au niveau du portail 9ias) dans les triggers de niveau table (alors que j'ai cette info dans les forms) ce login est indispensable s'il y a plusieurs utilisateurs sur la base simultanement (pour ne pas melanger les données dans la table temporaire)
dans les triggers de niveau statement on n'a pas acces aux variables de la table
L'idee la plus proche de la solution serait de faire un controle global sur la table, en la parcourant,sur l'événement KEY-COMMIT du formulaire (ihm) mais malheureusement un trigger générique provenant de designer fait un commit systematique avant que je puisse ajouter mon code de controle(de plus il me faut connaitre le matricule concerné pour ne pas parcourir tte la table)
et cerise sur le gateau ce qui vient ajouter à la difficulté c'est que les utilisateurs peuvent modifier ou inserer plusieurs lignes à la fois (si quelqu'un peut m'expliquer comment on peut bloquer la saisie à une seule modif à la fois je suis preneur!!!)
est ce que quelqu'un aurait une stratégie pour, apres tout, ne controller qu'une plage de dates (on doit bien pouvoir faire cela sous oracle???non???)
Marsh Posté le 03-09-2008 à 16:49:21
bonjour,
voila mon probleme:
j'ai une table sous oracle 9i
table plafonds
date_debut date
date_fin date
matricule number(5)
A l'insertion et à l'update je dois controller qu'il n'y a pas de periodes
de dates chevauchantes pour un meme matricule:
ex: on ne veux pas
date_debut date_fin matricule
01/01/2008 01/12/2008 33155
01/01/2007 01/02/2008 33155
mais
date_debut date_fin matricule
01/01/2008 01/12/2008 33155
01/01/2007 01/02/2007 33155
est correct.
le probleme c'est que sur les triggers de niveau row il y a le mutating
et si je passe par une table temporaire je n'ai pas acces au login de l'utilisateur
(login au niveau du portail 9ias) dans les triggers de niveau table (alors que j'ai
cette info dans les forms)
ce login est indispensable s'il y a plusieurs utilisateurs sur la base simultanement
(pour ne pas melanger les données dans la table temporaire)
dans les triggers de niveau statement on n'a pas acces aux variables de la table
L'idee la plus proche de la solution serait de faire un controle global sur la table,
en la parcourant,sur l'événement KEY-COMMIT du formulaire (ihm) mais malheureusement
un trigger générique provenant de designer fait un commit systematique avant que je puisse
ajouter mon code de controle(de plus il me faut connaitre le matricule concerné pour ne pas parcourir tte la table)
et cerise sur le gateau ce qui vient ajouter à la difficulté c'est que les utilisateurs
peuvent modifier ou inserer plusieurs lignes à la fois (si quelqu'un peut m'expliquer comment
on peut bloquer la saisie à une seule modif à la fois je suis preneur!!!)
est ce que quelqu'un aurait une stratégie pour, apres tout, ne controller qu'une plage de dates
(on doit bien pouvoir faire cela sous oracle???non???)
@+ ROSAGIO