Salut à tous,

Alors je vous préviens, je débute à PL/SQL c'est mon premier trigger mais comme le sujet l'indique il est pas encore au point... ^^

Alors ce que je dois faire:
Le déclencheur doit en cas d'ajout ou de modification vérifier les informations suivantes:
- que pour le même NO de contrat à la même date qu'il n'y ai pas un lieu identique à deux horaire différent.
- il doit bloquer l'exécution de la requête dans le cas contraire...

La table en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
create table PARCOURS (
	NO_CONTRAT varchar(32) not null,
	NO_PARCOURS number not null,
	DATE_PA date not null,
	HEURE_PA varchar(5) not null,
	LIEU_PA varchar(32) not null,
	constraint PK_PARCOURS primary key (NO_CONTRAT, NO_PARCOURS),
	constraint FK_PA_NO_CONTRAT foreign key (NO_CONTRAT)
		references CONTRAT(NO_CONTRAT)
);
Mon déclencheur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
create or replace trigger VERIF_HEURE_LIEU_DEPART
	before insert or update on PARCOURS
	for each row
		declare
			LIEU varchar(32);
			CONTRAT varchar(32);
			DATE_O date;
			HEURE varchar(5);
		begin
			select NO_CONTRAT, DATE_PA, LIEU_PA, HEURE_PA into CONTRAT, DATE_O, LIEU, HEURE
				from PARCOURS;
			if (:new.LIEU_PA = LIEU and :new.NO_CONTRAT = CONTRAT and :new.DATE_PA = DATE_O and :new.HEURE_PA <> HEURE) then
				raise_application_error(-20001,'Ce parcours existe avec un horaire différent.');
			end if
		end;
Merci de votre aide!

Bye