Comment creer un trigger

Fermé
asma24 - 12 janv. 2012 à 21:23
 asma24 - 12 janv. 2012 à 21:51
Bonjour, j ai un ptit pobleme avec les trigger je suis débutante en sql
alors j ai creer une base de donnée dans la quelle j ai creé trois table
create table chauffeur(codchauf integer primary key,nom varchar(20) not null,prenom varchar(20) not null,
datenaiss date ,paye integer,chiffre_affaireT integer);

create table taxi(matx integer primary key,annee integer,marque varchar(20),modele varchar(20),kilometrage integer,chiffre_affaireC integer );

create table trajets(codetrajet integer primary key,nom_client varchar(20),matx integer, foreign key(matx ) references taxi(matx ) ,codchauf integer
,foreign key(codchauf ) references chauffeur(codchauf ),date date,villedip varchar(20),villearrive varchar(20) ,prix integer);

la question c'etait:
1-un chauffeur ne peut pas utiliser plus de trois taxi differentes dans la meme journée?

mon proff ma dis q j vais creer un trigger psq c'est une contrainte
j ai essayé ca mais ca me rassemble que c'est pas correcte

delimiter |
create trigger contraint after insert on trajets
for each row
begin
declare ctr integer;
select count (matx) into ctr from trajets,taxi,chauffeur where
trajets.date=new.date and taxi.matx=trajets.matx and chauffeur.codchauf=trajets.codchauf;
if ctr>3 then
endif;
end|
si qlq un peut m'aider je serai contente merci



A voir également:

1 réponse

jee pee Messages postés 40616 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 2 janvier 2025 9 474
12 janv. 2012 à 21:37
Salut,

Déjà tu n'as pas précisé avec quel sgdb tu travailles, c'est essentiel pour au moins la syntaxe.

Le trigger, je ne l'exécuterais pas AFTER insert, mais BEFORE insert, pour empêcher de créer plus de 3 enregistrements répondant à tes critères.

Et donc avec un trigger BEFORE, il faudrait si le count est supérieur à 3 faire un FAILED pour envoyer un message d'erreur et empêcher la creation de plus de 3 enregistrements.


cdlt

0
salut je travail sur l'invite de commande avec mysql (mysql -u root -p)
oui j sais que je dois faire avec BEFORE mais il me faut l'exception d'erreur et je ne sais pas comment la faire!!!!!!!
si tu peut m'écrire la syntaxe correctement pour l'essayé !!
merci pour ta réponse
0
jee pee Messages postés 40616 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 2 janvier 2025 9 474
12 janv. 2012 à 21:49
Voilà pourquoi il est primordial d'indiquer le sgbd, moi je ne connais pas mysql, donc je ne peux pas te donner la syntaxe.
0
mmmmmmm malheureusement
en tout les cas merci bien pour votre explication ^^
0