Auteur |
Message |
PoP_NicoW
Forumeur fréquent
Messages: 57
|
Posté le:
Lun 09 Nov 2009 - 16:43 |
|
Bonjour,
j'ai commencé ma PTI base de données, donc j'ai choisi de le faire sur mysql (que j'utilise sans interface graphique).
Je suis bloqué pour faire mon trigger, j'ai pas trop compris comment les créer en faite et aussi la syntaxe. Je sais pas si c'est la bonne.
Voici ce que j'ai fait :
Le trigger est censé vérifier si un titre de film existe pas déja dans la table FILM quand l'utilisateur utilise un INSERT pour cette table.
CREATE TRIGGER Verif_Film
BEFORE INSERT OF Titre_Film
ON Film
FOR EACH STATEMENT
BEGIN ATOMIC
DECLARE nv_Titre VARCHAR(60);
DECLARE nb_Titre INT;
SELECT nv_Titre=Titre_Film From INSERTED
SELECT nb_Titre=count(*) from film
WHERE titre_film=nv_titre
IF (@nb_titre > 1)
Raiserror (le film existe deja)
Rollback work
END
END
Je me suis inspiré de plusiuer exemple que j'ai vu sur internet et de potes qui ont déja passé leurs BTS.
Donc pour la syntaxe j'ai un peu fait un mixe ne sachant si c'est la meme pour tout les SGBD.
Et donc la deuxieme question : comment l'intégrer a ma BDD, juste a la taper tel quel en ligne de commande ?
merci d'avance |
_________________ si y'a un probleme y'a une solution, si y'a pas de solution y'a pas de probleme. |
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
Cretine
Accro à Web-IG
Sexe:
Messages: 136
Localisation: Dtc / Mtp - Mende
|
Posté le:
Lun 09 Nov 2009 - 17:07 |
|
Bon je sais pas trop avec MySQL parce que nous on fait avec SQLServer, donc y a des trucs que je comprends pas trop genre euh ça :
"FOR EACH STATEMENT
BEGIN ATOMIC"
Enfin on l'utilise pas quoi.
Mais sinon, je crois que c'est juste.
(Enfin le meilleur moyen de savoir c'est de le tester hein ) |
_________________ "Comme une envie de tout plaquer, me jeter à terre, satisfait du moindre geste sans en avoir l'air... Si par principe j'admets les failles de votre part, veuillez accepter les raisons de mon désespoir" |
|
|
|
PoP_NicoW
Forumeur fréquent
Messages: 57
|
Posté le:
Lun 09 Nov 2009 - 18:09 |
|
Salut cretine,
Justement c'est de se genre de chose que je veux parler.
Je ne suis pas du tout sur des syntaxe puisque j'ai pris ca d'un exemple pour SQLserver. le BEGIN ATOMIC a l'air d'etre utilisé juste avec MySQL(enfin a vrai dire j'en sais trop rien).
C'est le soucis, j'aimerais bien que quelqu'un me dise les bonne syntaxe, l'équivalence de ce que j'ai fait mais pour MySQL, j'ai rien trouvé sur le net :/
Oaui, le tester c'est sur, mais je le créé comment dans ma bdd ? je l'écris en ligne de commande et c'est bon ?
En tout cas merci de ta réponse. |
_________________ si y'a un probleme y'a une solution, si y'a pas de solution y'a pas de probleme. |
|
|
|
PoP_NicoW
Forumeur fréquent
Messages: 57
|
Posté le:
Lun 09 Nov 2009 - 18:17 |
|
Je viens de trouver ca, enfaite ca a l'air d'etre la même syntaxe :
mysql> delimiter //
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account
-> FOR EACH ROW
-> BEGIN
-> IF NEW.amount <0> SET NEW.amount = 0;
-> ELSEIF NEW.amount > 100 THEN
-> SET NEW.amount = 100;
-> END IF;
-> END//
mysql> delimiter ; |
_________________ si y'a un probleme y'a une solution, si y'a pas de solution y'a pas de probleme. |
|
|
|
Cretine
Accro à Web-IG
Sexe:
Messages: 136
Localisation: Dtc / Mtp - Mende
|
Posté le:
Lun 09 Nov 2009 - 18:26 |
|
Ouais pour l'intégrer à ta BD tu fais "nouvelle requête" CREATE TRIGGER machin truc bidule et hop, exécuter ! Enfin, comme je te l'ai dit nous on est sous SQLServer et pas sous MySQL, si tu veux je te fais un c/c d'une syntaxe de trigger mais j'sais pas si ça peut t'aider.
CREATE TRIGGER [Nom_de_ton_trigger]
ON [Nom_de_ta_table]
FOR Insert (ou update, ou delete)
AS
IF [Ta contrainte]
BEGIN
Raiserror ('Ceci est un message d'erreur',16,1)
Rollback transaction
END |
_________________ "Comme une envie de tout plaquer, me jeter à terre, satisfait du moindre geste sans en avoir l'air... Si par principe j'admets les failles de votre part, veuillez accepter les raisons de mon désespoir" |
|
|
|
|