![]() ![]() Université de la Méditerranée Projet
Bases de Données GESTION D'UN CENTRE MEDICAL _______________ Enseignant responsable : C. Sabatier Stéphane BENOLIEL Promotion 1998 - 1999 Mai 1997 |
Analyse
I. Etudes préalables
A. Dictionnaire des données
B. Les règles de gestions
C. Les règles de calcul
II. Modèle conceptuel
III. Modèle relationnel
A. Les classes d'entités
B. Les classes d'associations
C. Les simplifications
D. Les contraintes
Programmation
I. Les déclencheurs
II. Les traitements
Algorithme de recherche de date
III. Les modifications
Les insertions
Les suppressions
Les modifications
Contenu des tables
I. Notre base
II. Les tests
Test du trigger sur la table intervention
| Nom | Définition | Type | Contraintes/Règles de calcul |
| DateInter | Jour de l'intervention | Elément. | |
| NumInter | Numéro d'intervention | Elément. | |
| NumInsee | Numéro du client | Elément. | |
| NomPat | Nom du patient | Elément. | |
| PrePat | Prénom du patient | Elément. | |
| AdrPat | Adresse de patient | Elément. | |
| CodePat | Code postal de la ville du client | Elément. | |
| VillePat | Ville du patient | Elément. | |
| NaisPat | Date de naissance du patient | Elément. | Il doit avoir entre 0 et 150 ans |
| SexePat | Sexe du patient | Elément. | Soit F soit M |
| NumServ | Numéro du service | Elément. | |
| NomServ | Nom du service | Elément. | |
| TelServ | Numéro de téléphone du service | Elément. | |
| JourOuv | Jour où le service est ouvert | Elément. | 4 jours de la semaine |
| NumActe | Type de l'acte | Elément. | |
| PrixActe | Prix élémentaire de l'acte | Elément. | |
| TauxSecu | Taux de remboursement de l'acte par la sécurité sociale | Elément. | Pourcentage de 0 à 100% |
| Numord | Numéro de l'ordre de l'acte d'une intervention | Elément. | |
| Créneau | Créneau horaire de la journée | Elément. | Plage de 2 heures |
| Section | Section du créneau | Elément. | Plages de 20 minutes |
| PrixPatientActe | Prix que le patient va payer | Calcul | PrixActe*(1-TauxSecu) |
| PrixInter | Prix d'une intervention | Calcul | S(PrixActe) |
| PrixPatientInter | Prix d'une inter. pour le patient | Calcul | S(PrixPatientActe) |
| TauxMoisServ | Taux d'un acte d'un service par mois | Calcul | S(un acte par mois)/ S(tous les actes par mois)*100 |
| TauxTrimServ | Taux des actes d'un service par trimestre pour le centre | Calcul | S(Actes d'un service)/ S(Actes du centre)*100 |
| SactTrim | Nb total d'actes x pour le service y sur la durée d'un trimestre | Calcul | S actes[x] par service et par trimestre |
| SactTrimCentre | Nb total d'actes x pour le centre pour le trimestre | Calcul | S actes[x] par trimestre |
| SactMensCentre | Nb total d'actes x pour le centre pour le mois | Calcul | S actes[x] par mois |
| SactMens | Nb total d'actes x pour le service y sur la durée d'un mois | Calcul | S actes[x] par service et par mois |
· Un malade ne subit qu'une
intervention par jour.
Ä Une intervention = un malade.
Ä Une intervention = un jour.
· Une intervention est composée d'un
certains nombres d'actes.
· Une intervention est composée d'un
certains nombres d'actes ordonnés chronologiquement.
· Un service est ouvert 4 jours sur
7.
· Un service est ouvert durant 5
créneaux ( 8h à 18h ).
· Un service est compétent dans 3
types d'actes différents maximums.
· Un service exécute 6 actes
maximums par créneau.
· Une ordonnance donne le jour de
l'intervention.
· Une ordonnance donne les 4 actes
maximums qui constituent l'intervention.
· Une ordonnance donne pour chaque
acte le créneau horaire et le service.
· Un acte peut être réalisé par
plusieurs services.
· A tout moment, le bureau
planning doit être capable de proposer à un client des
rendez-vous précis pour l'exécution d'une
intervention qui lui a été prescrite.
· En début de journée, le bureau
planning doit fournir à chaque service, la liste ordonnée des
clients attendus et des actes à exécuter.
· Au départ du client, le service
facturation doit établir la facture globale de chaque
intervention, en détaillant les coûts de chacun des actes qui
la composent, ainsi que la part restant à la charge du patient.
· En fin de mois, pour chaque
service, et chaque acte qu'il peut assurer, afficher le
nombre total d'actes effectués et le pourcentage de ces
actes par rapport à l'activité globale mensuelle du
service.
Pour réaliser ceci, nous avons besoin d'effectuer les
calculs suivants :
- A = S actes[x] par service et par
mois.
- B = S actes[x] par mois et pour le
centre.
- C = A*100/B
· En fin de trimestre, pour chaque
acte pris en charge par le centre, et pour chaque service
assurant un tel acte, pourcentage réalisé par ce service
relatif au nombre total d'actes de ce type réalisé au
centre, pendant le trimestre écoulé.
Pour réaliser ceci, nous avons besoin d'effectuer les
calculs suivants :
- A = S actes[x] par service et par
trimestre.
- B = S actes[x] par trimestre et pour
le centre.
- C = A*100/B.
La classe d'entités PATIENT décrit les
caractéristiques des patients.
La classe d'entités INTERVENTION donne uniquement
les numéros des interventions.
La classe d'entités ACTES décrit les actes
médicaux.
La classe d'entités SERVICE décrit les services du
centre médical.
La classe d'entités JOUR SEMAINE donne tous les
jours de la semaine.
La classe d'entités ORDRE donne les ordres
dans lesquels les actes doivent être exécutés (de 1 à 4).
Chaque association ORDONNANCE entre un patient et une
intervention indique une intervention subie par ce patient à une
date donnée.
Chaque association SE COMPOSE indique pour une
intervention les actes effectués (ou prévus), ainsi que
l'ordre dans lequel ils doivent avoir lieu.
Chaque association RENDEZ VOUS indique les services
concernés par une intervention, ainsi que l'ordre dans
lequel ils interviennent. Elle donne aussi le moment où a lieu
l'intervention (créneau, section).
Chaque association COMPETENT donne pour un acte les
services capables de le pratiquer, et pour un service les actes
qu'il peut effectuer.
Chaque association OUVERT donne un jour d'ouverture
pour un service.
INTERVENTION(NumInter, NumInsee, DateInter)
PATIENT(NumInsee, NomPat, PrePat, AdrPat, CodePat,
VillePat, NaisPat, SexePat)
SERVICE(NumServ, NomServ, TelServ)
ACTE(NumActe, PrixActe, TauxSecu)
RENDEZVOUS(NumInter, NumOrd, NumServ, Creneau, Section)
OUVERT(NumServ, JourOuv)
COMPETENT(NomServ, NumActe)
COMPOSITION(NumInter, NumOrd, NumActe)
Nous pouvons remarquer que la classe d'entités ORDRE ne contient qu'un attribut clef et ne participe qu'à des classes d'associations avec une cardinalité maximale de N. Nous pouvons donc supprimer la relation ORDRE en la remplaçant par une contrainte de domaine :
NumOrdre appartient à {1, 4}
La relation PATIENT
NumInsee est différent pour chaque patient et strictement
positif.
SexePat est soit le caractère 'F' soit 'M'.
La relation INTERVENTION
NumInter est différent pour chaque intervention et
strictement positif.
NumInsee fait référence à la table PATIENT(NumInsee).
DateInter la date ne peut être nulle.
Le couple (NumInsee,DateInter) est unique.
La relation SERVICE
NumServ est différent pour chaque service et strictement
positif.
Le couple (NumServ, NomServ, TelServ) est unique.
La relation OUVERT
NumServ fait référence à la table SERVICE(NumServ).
JourOuv appartient à l'ensemble des jours de la semaine.
Le couple (NumServ, JourOuv) est différent pour chaque élément
de ouvert.
La relation ACTE
NumActe est différent pour chaque acte et strictement
positive.
PrixActe est strictement positive.
TauxSecu est un décimal compris entre 0 et 1.
La relation COMPETENT
NumServ fait référence à la table SERVICE(NumServ).
NumActe fait référence à la table ACTE(NumActe).
Le couple (NumServ, NumActe) est différent pour chaque élément
de compétent.
La relation COMPOSITION
NumInter fait référence à la table INTERVENTION(NumInter).
NumOrd est un entier compris entre 1 et 4.
Le couple (NumInter, NumOrd) est différent pour chaque élément
de composition.
NumActe fait référence à la table ACTE(NumActe) et ne peut
être nul.
La relation RENDEZVOUS
NumInter fait référence à la table INTERVENTION(NumInter).
NumOrd est un entier compris entre 1 et 4.
Le couple (NumInter, NumOrd) est différent pour chaque élément
de rendezvous.
Le couple (NumInter, NumOrd) est une clef étrangère et fait
référence à la table COMPOSITION(NumInter, NumOrd).
NumServ fait référence à la table SERVICE(NumServ) est ne peut
être nul.
Creneau est un entier non nul compris entre 1 et 5.
Section est un entier non nul compris entre 1 et 6.
Le couple (NumInter, Creneau) est unique.
Trig_competant_3_actes_max
Ce trigger permet de vérifier, avant une insertion dans la
table COMPETENT, qu'un service X n'a pas plus de 3
compétences.Notre algorithme se comporte de la façon suivante :
Grâce au SELECT, nous calculons le nombre de lignes dans
COMPETENT en faisant une jointure avec le numéro de service où
nous voulons rajouter une compétence et tous les services ayant
des compétences. En fait ce SELECT nous renvoie le nombre de
compétences du service X.
Tant que ce nombre est inférieur ou égal à 2 on peut rajouter
une compétence à ce service, sinon nous affichons un message
d'erreur.
Trig_ouvert_jour_semaine
Ce trigger permet avant l'insertion d'un jour d'ouverture
d'un service, de réaliser deux tests. Il s'assure que
le service n'est pas déjà ouvert et que le nombre de
journées ouvrables est bien inférieur ou égale à quatre.Notre
algorithme se comporte de la façon suivante :
Nous utilisons une variable NB qui servira de compteur auxiliaire
dans le premier SELECT, nous calculons le nombre de jours où le
service Y est ouvert en faisant une jointure entre le numéro du
service de Y et tous les autres services. Tant que ce nombre est
strictement inférieur à trois nous pouvons rajouter un jour
d'ouverture, sinon nous indiquons qu'il y a une erreur.
Ensuite dans le second SELECT nous cherchons dans la table OUVERT
si le service Y n'est pas déjà ouvert ce jour là. Nous
utilisons pour cela la même jointure que ci-dessus plus une
seconde jointure (jour à insérer / jours déjà existant pour
Y). Si nous trouvons au moins une ligne il y a une erreur.
Trigger_patient_nais
Ce trigger permet avant l'insertion et la modification dans la table patient, de vérifier la validité d'une date, en effet nous comparons cette date à la date système.
Date système - 150 ans < La Date < Date système.
En cas d'anomalie une erreur est détectée " error 20000 date erronée "
Trigger_intervention
Ce trigger permet de garder les interventions qui ont eu lieu. En effet il nous faut garder les données pour effectuer d'éventuels calculs statistiques. Nous comparons la date à la date système en nous assurant que cette dernière est bien passée en cas d'erreur : " Intervention Passée ".
Trigger_rdv
Ce trigger permet avant l'insertion et la modification, de réaliser trois tests. Le rendez-vous doit être pris un jour où le service est ouvert; les créneaux du rendez-vous pris doivent être conformes à la hiérarchie des actes prescrits dans l'ordonnance; le créneau Û section dans ce service doit être libre.
· A tous moments, le bureau planning doit être capable de proposer à un client des rendez-vous précis pour l'exécution d'une intervention qui lui a été prescrite.
Cette fonction permet de trouver, à partir d'une
ordonnance composée au plus de 4 actes, la date, les créneaux,
et les services pouvant permettre l'intervention.
Il s'agit d'une transaction PL/SQL avec une interface
utilisateur. Au début, nous demandons le numéro d'INSEE du
patient, les différents actes qu'il doit subir, et la date
d'intervention souhaitée. La fonction retourne alors un
rendez-vous possible et propose l'insertion de
l'intervention dans la base de données.
Le principe de cette transaction est le suivant :
Pour une date donnée, on regarde si le patient n'a pas
d'intervention prévue. Si c'est le cas, on recherche
pour chaque acte, un créneau et une section,
où un service compétent pour cet acte, est libre. Si tous les
actes trouvent leur place dans une même journée, alors un rendez-vous
est proposé au patient. Sinon, nous incrémentons le jour et
nous recommençons.
Algorithme de recherche de date:
début
..Tant que date non trouvée faire
....pour chaque acte faire
......pour chaque créneau faire
........pour chaque section faire
..........pour chaque service faire
............si le service est compétent dans l'acte
............et si il est libre au moment donné
(jour,créneau,section)
............alors faire
...............enregistrer rendez-vous concernant
l'acte;
...............supprimer le créneau;
............finsi
..........finpour
........finpour
......finpour
....finpour
....si tous les actes ont été enregistré alors faire
......sortir;
....sinon faire
......jour ¬ jour + 1;
....finsi
..fintantque
fin
La programmation de cette transaction à nécessité un
apprentissage approfondi du PL/SQL. Nous avons choisi
d'utiliser des tables temporaires que le programme parcourt
tout au long de son exécution. Pour cela, nous avons dû nous
servir de nombreux curseurs car les requêtes select into
pouvaient provoquer des exceptions dans certains cas.
Pour l'enregistrement dans la base, nous avons fait une
autre boucle PL/SQL.
Proposition de rendez-vous :
TROUVER UNE DATE POUR UNE ORDONNANCE
____________________________________
LISTE DES ACTES DISPONIBLE
__________________________
| ACTE |
| 2 |
| 3 |
| 4 |
Numéro insee du patient :1
Composition de L'ORDONNANCE
Acte numero 1 :2
Acte numero 2 (entrer '-1' pour aucune action) :3
Acte numero 3 (entrer '-1' pour aucune action) :-1
Acte numero 4 (entrer '-1' pour aucune action) :-1
Date souhaitee (au plus tot):25-05-97
| NUMINSEE | DATEINTE | NUMACTE | NUMSERV | CRENEAU | SECTION |
| 1 | 29/05/97 | 2 | 101 | 1 | 1 |
| 1 | 29/05/97 | 3 | 101 | 2 | 1 |
VALIDATION DU RENDEZ-VOUS
Voulez-vous confirmer le rendez-vous (O/N):O
APRES
TABLE INTERVENTION
| NUMINTER | NUMINSEE | DATEINTE |
| 1 | 1 | 23/05/97 |
| 2 | 2 | 23/05/97 |
| 3 | 3 | 23/05/97 |
| 4 | 4 | 23/05/97 |
| 5 | 5 | 02/06/97 |
| 6 | 6 | 05/06/97 |
| 7 | 1 | 26/05/97 |
| 8 | 1 | 27/05/97 |
| 9 | 1 | 29/05/97 |
TABLE COMPOSITION
| NUMINTER | NUMORD | NUMACTE |
| 7 | 1 | 2 |
| 1 | 2 | 2 |
| 7 | 2 | 3 |
| 1 | 4 | 3 |
| 2 | 1 | 3 |
| 2 | 2 | 2 |
| 8 | 1 | 3 |
| 3 | 1 | 3 |
| 3 | 2 | 2 |
| 8 | 3 | 4 |
| 9 | 1 | 2 |
| 9 | 2 | 3 |
| 4 | 2 | 2 |
| 4 | 4 | 3 |
| 5 | 2 | 2 |
| 5 | 3 | 3 |
| 6 | 2 | 2 |
| 6 | 4 | 3 |
TABLE RENDEZ-VOUS
| NUMINTER | NUMORD | NUMSERV | CRENEAU | SECTION |
| 7 | 1 | 101 | 1 | 1 |
| 5 | 2 | 102 | 2 | 2 |
| 5 | 3 | 102 | 3 | 2 |
| 7 | 2 | 101 | 2 | 1 |
| 8 | 1 | 101 | 1 | 1 |
| 6 | 2 | 102 | 2 | 3 |
| 8 | 2 | 101 | 2 | 1 |
| 6 | 4 | 102 | 4 | 3 |
| 8 | 3 | 102 | 3 | 1 |
| 1 | 2 | 101 | 2 | 1 |
| 9 | 1 | 101 | 1 | 1 |
| 1 | 4 | 101 | 4 | 1 |
| 2 | 1 | 101 | 1 | 2 |
| 2 | 2 | 101 | 2 | 2 |
| 9 | 2 | 101 | 2 | 1 |
| 3 | 1 | 101 | 1 | 3 |
| 3 | 2 | 101 | 2 | 4 |
| 4 | 2 | 102 | 2 | 1 |
| 4 | 4 | 102 | 4 | 1 |
· En début de journée, le bureau planning doit fournir à chaque service, la liste ordonnée des clients attendus et des actes à exécuter.
Ce traitement donne pour chaque service :
Les noms des patients et les actes qu'ils auront à subir durant
la journée.Toutes ces données seront triées par services, par
créneaux puis par sections.Nous avons utilisé pour cela une vue
qui renvoie numserv,creneau,section,nompat et numacte et tries
dans cette ordre, puis grâce à un select nous n'affichons que
numserv,nompat et numacte
Voici ce que nous observons à l'écran :
Planning d'une journée par service
__________________________________
| SERVICE | NOM | ACTE |
| 101 | Vinie | 1 |
| 101 | Dohsun | 3 |
| 101 | Apollon | 3 |
| 101 | Vinie | 2 |
| 101 | Dohsun | 2 |
| 101 | Apollon | 2 |
| 101 | Vinie | 1 |
| 101 | Dohsun | 1 |
| 101 | Apollon | 1 |
| 101 | Vinie | 3 |
| 101 | Dohsun | 1 |
| 101 | Apollon | 1 |
| 102 | Samy | 1 |
| 102 | Samy | 2 |
| 102 | Smay | 3 |
· Au départ
du client, le service facturation doit établir la facture
globale de chaque intervention, an détaillant les coûts de
chacun des actes qui la composent, ainsi que la part restant à
la charge du malade.
Cette transaction calcule le montant d'une intervention
subit par un patient. Nous recherchons les actes effectués dans
la table COMPOSITION et nous calculons les différents
prix grâce au prix de l'acte et son taux de prise en charge
par la sécurité sociale (table ACTE).
· Pour chaque
service, et chaque acte qu'il peut assurer, afficher le
nombre total d'actes effectués et le pourcentage de ces
actes par rapport à l'activité globale mensuelle du
service.
Afin de réaliser ce traitement, nous avons dû mettre en place
deux vues. La première vue calcule pour le mois en cours, pour
chaque service, le nombre d'actes par type d'actes
qu'il a effectué. La deuxième vue recherche le nombre
d'actes qui a été réalisé dans le mois et pour chaque
service. Une simple requête nous permet alors de donner pour
chaque service et chaque acte le pourcentage de ces actes par
rapport à l'activité globale mensuelle du service en
appliquant l'opération précisée dans le chapitre
" Analyse " partie " Règles de
calculs ".
· Pour une
période donnée, pour chaque acte pris en charge par le centre,
et pour chaque service assurant un tel acte, pourcentage
réalisé par ce service relatif au nombre total d'actes de
ce type réalisés au centre.
Afin de réaliser ce traitement, nous avons dû également mettre
en place deux vues. La première vue est strictement identique à
celle du traitement précédent excepté qu'elle effectue
les calculs sur une période donnée. La deuxième vue recherche
le nombre d'actes qui a été réalisé dans le centre
durant cette période. Une simple requête nous permet alors de
donner pour chaque service et chaque acte pris en charge par le
centre, le pourcentage réalisé par ce service relatif au nombre
total d'actes de ce type réalisés au centre, en appliquant
l'opération précisée dans le chapitre
" Analyse " partie " Règles de
calculs ".
Ces transactions demandent à l'utilisateur les données à insérer et les insèrent dans la table choisie. Ces transactions offrent un interfaçage minimal, mais appréciable.
Les
suppressions
Ces transactions demandent à l'utilisateur les
références des lignes à supprimer, et effacent les données en
tenant compte des liaisons (FOREIGN KEYS) avec les autres
tables. De plus, elles facilitent les suppressions en chaîne.
Les
modifications
Ces transactions demandent à l'utilisateur les
références des lignes à modifier, ainsi que les nouvelles
valeurs à insérer. Dans le cas où l'on ne veut pas
changer une des valeurs, il suffit de taper sur ENTREE.
Afin de tester au mieux notre base de données nous avons simuler un exemple en entrant un jeu de données valides.Par la suite nous l'avons testé en entrant des données incorrectes, en vérifiant que celles-ci n'étaient pas validées.
La table INTERVENTION
NUMINTER |
NUMINSEE |
DATEINTE |
1 |
1 |
23/05/97 |
2 |
2 |
23/05/97 |
3 |
3 |
23/05/97 |
4 |
4 |
23/05/97 |
5 |
5 |
02/06/97 |
6 |
6 |
05/06/97 |
La table PATIENT
NUMINSEE |
NOMPAT |
PREPAT |
ADRPAT |
CODEP |
VILLEPAT |
NAISPAT |
SEXE |
1 |
vinie |
F |
|||||
2 |
dohsun |
M |
|||||
3 |
apollon |
M |
|||||
4 |
samy |
M |
|||||
5 |
cool |
M |
|||||
6 |
beno |
M |
La table SERVICE
NUMSERV |
NOMSERV |
TELSERV |
101 |
||
102 |
||
103 |
||
104 |
La table OUVERT
NUMSERV |
JOUROUV |
101 |
LUNDI |
101 |
MARDI |
101 |
JEUDI |
101 |
VENDREDI |
102 |
LUNDI |
102 |
MARDI |
102 |
JEUDI |
102 |
VENDREDI |
103 |
LUNDI |
103 |
MARDI |
103 |
JEUDI |
103 |
VENDREDI |
104 |
LUNDI |
104 |
MARDI |
104 |
JEUDI |
104 |
VENDREDI |
La table ACTE
NUMACTE |
PRIXACTE |
TAUXSECU |
1 |
1 |
0 |
2 |
1 |
0 |
3 |
1 |
0 |
4 |
1 |
0 |
La table COMPOSITION
NUMSERV |
NUMACTE |
101 |
1 |
101 |
2 |
101 |
3 |
102 |
1 |
102 |
2 |
102 |
4 |
103 |
1 |
104 |
1 |
104 |
4 |
La table COMPETENT
NUMINTER |
NUMORD |
NUMACTE |
1 |
1 |
1 |
1 |
2 |
2 |
1 |
3 |
1 |
1 |
4 |
3 |
2 |
1 |
3 |
2 |
2 |
2 |
2 |
3 |
1 |
2 |
4 |
1 |
3 |
1 |
3 |
3 |
2 |
2 |
3 |
3 |
1 |
3 |
4 |
1 |
4 |
1 |
1 |
4 |
2 |
2 |
4 |
3 |
1 |
4 |
4 |
3 |
5 |
1 |
1 |
5 |
2 |
2 |
5 |
3 |
3 |
5 |
4 |
1 |
6 |
1 |
1 |
6 |
2 |
2 |
6 |
3 |
1 |
6 |
4 |
3 |
La table RENDEZ-VOUS
NUMINTER |
NUMORD |
NUMSERV |
CRENEAU |
SECTION |
5 |
1 |
102 |
1 |
2 |
5 |
2 |
102 |
2 |
2 |
5 |
3 |
102 |
3 |
2 |
5 |
4 |
102 |
4 |
2 |
6 |
1 |
102 |
1 |
3 |
6 |
2 |
102 |
2 |
3 |
6 |
3 |
102 |
3 |
3 |
6 |
4 |
102 |
4 |
3 |
1 |
1 |
101 |
1 |
1 |
1 |
2 |
101 |
2 |
1 |
1 |
3 |
101 |
3 |
1 |
1 |
4 |
101 |
4 |
1 |
2 |
1 |
101 |
1 |
2 |
2 |
2 |
101 |
2 |
2 |
2 |
3 |
101 |
3 |
2 |
2 |
4 |
101 |
4 |
2 |
3 |
1 |
101 |
1 |
3 |
3 |
2 |
101 |
2 |
4 |
3 |
3 |
101 |
3 |
5 |
3 |
4 |
101 |
4 |
6 |
4 |
1 |
102 |
1 |
1 |
4 |
2 |
102 |
2 |
1 |
4 |
3 |
102 |
3 |
1 |
4 |
4 |
102 |
4 |
1 |
Test du trigger sur la table intervention:
SQL> insert into intervention values
(56,1,'21-05-97');
insert into intervention values (56,1,'21-05-97')
*
ERREUR à la ligne 1:
ORA-20000: Intervention Passee
ORA-06512: à ligne 2
ORA-04088: erreur lors d'exécution du déclencheur
'USR11.TRIGGER_INTERVENTION'
SQL> insert into intervention values
(68,3,'29-05-97');
1 ligne créée.