[MySQL] Ajout de multiples enregistrements avec trigger

Ajout de multiples enregistrements avec trigger [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 13-10-2017 à 11:58:10    

Bonjour,
 
J'utilise dont MySQL et le trigger que je souhaite faire "utilise" 3 tables, que voici (avec juste les champs nécessaires ici):
 
- table APPLIS, avec un "id" Auto_Increment et un "nom" varchar(32)
- table "USERS", avec un "id" Auto_Increment et un "nom" varchar(32)
- table "users2applis", avec un "id" Auto_Increment, un "id_users" et un "id_applis" (avec clés étrangères sur les ID des applis et users
 
Ma table "APPLIS" contient déjà tout ce qu'il faut.
Je souhaiterais par contre, lors de l'ajout d'un "user", qu'un trigger ajoute dans la table "users2applis" l'ID du l'utilisateur couplé aux ID de toutes les applications présentes dans la table "APPLIS".
Je pourrais le faire "manuellement" dans mon code PHP mais je me dit qu'avec un trigger ça peut éviter des erreurs, et ça me permet aussi de voir comment ça fonctionne.
C'est sans doute simple mais je débute et les didactiels que j'ai pu voir pour le moment ne me sont pas d'une grande utilité...
 
Par avance merci, et ça me sera utile pour d'autres tables ensuite.

Reply

Marsh Posté le 13-10-2017 à 11:58:10   

Reply

Marsh Posté le 13-10-2017 à 13:46:21    

Il faut donc que ton trigger déclenche cette requête :

Code :
  1. INSERT INTO users2applis(id_applis, id_users)
  2.    SELECT id, NEW.id FROM APPLIS
  3. ;


?
 
Soit :

Code :
  1. DELIMITER //
  2.  
  3. CREATE TRIGGER users_after_insert
  4.    AFTER INSERT ON USERS
  5.    FOR EACH ROW
  6. BEGIN
  7.    INSERT INTO users2applis(id_applis, id_users)
  8.        SELECT id, NEW.id FROM APPLIS
  9.    ;
  10. END;//
  11.  
  12. DELIMITER ;


 
(syntaxe à vérifier)


Message édité par pluj le 13-10-2017 à 13:48:09
Reply

Marsh Posté le 13-10-2017 à 14:02:48    

Tout bêtement?!
 
Je pensais que le INSERT/SELECT n'enregistrait pas plusieurs lignes mais seulement une seule, du coup, j'ai un peu honte... :D
 
Je vais donc essayer ça, merci!

Reply

Marsh Posté le 13-10-2017 à 14:30:08    

Après essai ça fonctionne sans problème.
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed