Trigger de sql server en mysql
lola1344
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je dois mettre un trigger permettant a un visiteur de ne pas avoir plus de 3 spécialités. J'ai fais le trigger en sql server mais je n'arrive pas à le retranscrire en mysql.
Merci
Je dois mettre un trigger permettant a un visiteur de ne pas avoir plus de 3 spécialités. J'ai fais le trigger en sql server mais je n'arrive pas à le retranscrire en mysql.
create trigger verif_trois_specialites_max on prefere for insert as declare @nb int set @nb = (select count(*) from prefere where idVisiteur =(select idVisiteur from inserted)) if(@nb>3) begin delete from prefere where idVisiteur =(select idVisiteur from inserted) and idSpecialite =(select idSpecialite from inserted) print'Il ne peut pas y avoir plus de 3 spécialités par visiteur' end
Merci
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Trigger de sql server en mysql
- Mysql community server - Télécharger - Bases de données
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Filezilla server - Télécharger - Téléchargement & Transfert
- Typsoft ftp server - Télécharger - Téléchargement & Transfert
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
A tout hasard:
Attention, j'ai lu qu'il n'était pas possible de faire un delete dans la table ayant causé le trigger.
Peut-être préférable de faire un trigger before insert, et, si le nombre de spécialités est atteint, de forcer l'insertion d'un enregistrement avec idVisiteur vide?
Prévois-tu aussi de faire un trigger "before update", pour empecher, en mettant à jour idVisiteur, de provoquer une situation avec plus de trois spécialités?
create trigger verif_trois_specialites_max after insert on prefere for each row begin declare @nb int set @nb = (select count(*) from prefere where idVisiteur =NEW.idVisiteur if(@nb>3) delete from prefere where idVisiteur =NEW.idVisiteur and idSpecialite =NEW.idSpecialite end
Attention, j'ai lu qu'il n'était pas possible de faire un delete dans la table ayant causé le trigger.
Peut-être préférable de faire un trigger before insert, et, si le nombre de spécialités est atteint, de forcer l'insertion d'un enregistrement avec idVisiteur vide?
Prévois-tu aussi de faire un trigger "before update", pour empecher, en mettant à jour idVisiteur, de provoquer une situation avec plus de trois spécialités?