Maison > Article > base de données > Comment utiliser les déclencheurs MySQL pour insérer des lignes dans une autre table ?
Insérer des lignes dans une autre table à l'aide d'un déclencheur MySQL
Dans les systèmes de gestion de bases de données relationnelles comme MySQL, les déclencheurs jouent un rôle central dans l'automatisation de certaines actions de base de données en réponse à des événements spécifiques, tels que l'insertion, la suppression ou la modification de données. Dans ce contexte, abordons le sujet de la création d'un déclencheur qui insère une ligne dans une autre table lors de l'insertion d'une ligne dans une table donnée.
Comprendre le problème
Le l'objectif est de créer un déclencheur MySQL sur une table "commentaires" qui surveille chaque événement d'insertion de ligne. Lorsqu'une nouvelle ligne de commentaire est insérée, le déclencheur doit effectuer les tâches suivantes :
Déclencheur Structure
La structure de base du déclencheur pour implémenter ces fonctionnalités implique les éléments suivants :
CREATE TRIGGER <trigger_name> AFTER INSERT ON <source_table> FOR EACH ROW BEGIN -- Retrieve the ID of the newly inserted row DECLARE last_insert_id INT; SET last_insert_id = LAST_INSERT_ID(); -- Insert data into the "activities" table INSERT INTO <target_table> (column_list) VALUES (new.column1, new.column2, ..., last_insert_id); END
Mise en œuvre du déclencheur
Pour démontrer la implémentation, considérons l'exemple suivant :
-- Create the "comments" and "activities" tables CREATE TABLE comments ( comment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT UNSIGNED NOT NULL ) ENGINE=INNODB; CREATE TABLE activities ( activity_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, comment_id INT UNSIGNED NOT NULL, user_id INT UNSIGNED NOT NULL ) ENGINE=INNODB; -- Create the trigger to insert data into the "activities" table CREATE TRIGGER comments_after_ins_trig AFTER INSERT ON comments FOR EACH ROW BEGIN -- Retrieve the ID of the newly inserted comment row DECLARE last_insert_id INT; SET last_insert_id = LAST_INSERT_ID(); -- Insert data into the "activities" table INSERT INTO activities (comment_id, user_id) VALUES (new.comment_id, new.user_id); END; -- Insert some data into the "comments" table INSERT INTO comments (user_id) VALUES (1), (2); -- Query the "comments" and "activities" tables to observe the results SELECT * FROM comments; SELECT * FROM activities;
Lors de l'exécution des requêtes, vous remarquerez que pour chaque ligne de commentaire insérée dans le tableau "commentaires", une ligne correspondante est automatiquement insérée dans le tableau "activités". Cela démontre l'efficacité du déclencheur pour obtenir le résultat souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!