Trigger de sql server en mysql

Fermé
lola1344 - Modifié par crapoulou le 26/12/2016 à 14:47
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 26 déc. 2016 à 16:56
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.

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:

1 réponse

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié par yg_be le 26/12/2016 à 17:06
A tout hasard:
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?
0