Bonjour,
Je suis en train de gérer les inscriptions d'un évènement.
L'id, en auto-incremente, correspond au numéro de dossard.
Je viens d'avoir une demande d'un participant pour avoir un numéro spécifique.
Je souhaite donc bloquer cet id pour que je puisse lui attribuer manuellement.
En cherchant sur le net, j'ai trouvé le trigger pour mysql
Hélas, je n'arrive pas à l'ajouter à PMA.
CREATE TRIGGER stop_id_93
AFTER INSERT ON rallye
FOR EACH ROW
BEGIN
IF id = 92 THEN
ALTER TABLE rallye AUTO_INCREMENT = 94;
END IF;
END;
Voici le code que j'ai tenté.
Merci pour votre aide
Bonjour Carouge,
D'après la doc MySQL les triggers ne peuvent pas modifier une table :
https://dev.mysql.com/doc/refman/8.4/en/stored-program-restrictions.html#stored-routines-trigger-restrictions
Pas d'idée en revanche de comment contourner le problème...
Merci pour la réponse.
J'ai pour l'instant contourner le problème en récupérant l'id crée, et si celui-ci est "interdit" alors je le modifie en l'incrémentant de 1.
Mysql modifiera l'auto incremente automatiquement
Ah top ! ^^
En lisant plus attentivement la doc je réalise que les triggers peuvent bien modifier une table (mauvaise interprétation de ma part au dessus)... Mais peut être pas la table en cours de lecture / écriture (cf A. 5.9) :
https://dev.mysql.com/doc/refman/8.4/en/faqs-triggers.html#faq-mysql-can-triggers-tables
Hello,
Je pense que le plus simple aurait été d'ajouter un champ numero_dossard directement dans la table.
L'avantage étant ainsi de pouvoir personnaliser plus facilement les numéros des dossards des participants.
L'inconvénient étant de vérifier en amont que le dossard n'a pas déjà été attribué à un participant avant l'enregistrement en BDD... mais cela est facilement automatisable.
D'ailleurs, y a-t-il vraiment un intérêt que les numéros des dossards se suivent ? Un numéro aléatoire ne serait-il pas plus simple ?
De plus cela permet de dissocier le technique du fonctionnel : numéro d'enregistrement (technique) et numéro de dossard (fonctionnel). Je trouve cela plus propre.
A+
Bonjour,
Ajouter un champ pour le dossard alourdirais un peu le code.
A l'origine, les numéros de dossards devaint être lier à un chasuble déjà numéroté, donc je ne pouvais pas me permettre de faire du aléatoire.
Aujourd'hui ce n'est plus cas. En revanche comme il y a un export excel derrière, cela facile le comptage des participants.
Le nombre maximum de "dossards" est de 250. Cela n'est pas assez important pour faire la dissociation comme cela a été proposé.
Merci pour ton commentaire.