Submitted by pcsystemd on
Bonjour,
J'ai crée un trigger pour la table users .
J'importe via un script des utilisateurs d'une autre bdd dans la bdd de drupal afin de les insérer automatiquement. Pour cela j'ai crée des nouvelles tables dans la bdd de Drupal. Cela fonctionne très bien depuis plusieurs années.
Le trigger sert a inséré dans la table users_roles et la table que j'ai crée employes certaines informations a la creation d'un nouvel utilisateur.
Mon premier trigger que j'avais crée fonctionne parfaitement :
DROP TRIGGER IF EXISTS users_insert_drupal
//
CREATE TRIGGER users_insert_drupal
AFTER INSERT ON users
FOR EACH ROW BEGIN
INSERT INTO users_roles (uid,rid)
SELECT u.uid, r.rid
FROM role r, users u, employes ep
WHERE ep.fonct=r.name and ep.ref_pers=NEW.ref_uid and u.uid = NEW.uid ;
END
//
J'ai remplacé ce trigger par celui qui suit et depuis lorsque l'on crée un nouvel utilisateur j'ai le message d'erreur suivant : "Erreur à la sauvegarde du compte utilisateur" qui apparaît dans drupal et l'utilisateur n'est pas inséré en base!
Lorsque je regarde le rapport d'erreurs de drupal j'ai l'erreur suivante :
Unknown table 'ep' in field list query: INSERT INTO users (name, mail, pass, status, language, timezone, init, created, access) VALUES ('pcsys', 'toto@free.fr', 'ab4f63f9ac65152575886860dde480a1', 1, 'fr', 7200, 'toto@free.fr', 1444291509, 1444291509) dans /var/www/intrac21/modules/user/user.module à la ligne 342.
Mon trigger :
DROP TRIGGER IF EXISTS users_insert_drupal
//
CREATE TRIGGER users_insert_drupal
AFTER INSERT ON users
FOR EACH ROW BEGIN
INSERT INTO users_roles (uid,rid)
SELECT u.uid, r.rid
FROM role r, users u, employes ep
WHERE ep.fonct=r.name and ep.ref_pers=NEW.ref_uid and u.uid = NEW.uid ;
IF ep.activite=QUOTE("Isle d'ene") or ep.activ='Fond Duire' THEN
INSERT INTO users_roles (uid,rid)
SELECT u.uid,19
FROM users u, employes ep
WHERE ep.ref_pers=NEW.ref_uid and u.uid = NEW.uid ;
ELSE
INSERT INTO users_roles (uid,rid)
SELECT u.uid, r.rid
FROM role r, users u, employes ep
WHERE ep.activ=r.name and ep.ref_pers=NEW.ref_uid and u.uid = NEW.uid ;
END IF;
END
//
Pour info, j'ai des champs de type BLOB. Ce ne serait pas cela qui pose problème?
Une idée?
Merci