Trigger de sql server en mysql

lola1344 -  
yg_be Messages postés 23437 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.

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.

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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