update - trigger para insertar datos en otra tabla mysql
¿Cómo programar un disparador de MySQL para insertar una fila en otra tabla? (1)
drop table if exists comments;
create table comments
(
comment_id int unsigned not null auto_increment primary key,
user_id int unsigned not null
)
engine=innodb;
drop table if exists activities;
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;
delimiter #
create trigger comments_after_ins_trig after insert on comments
for each row
begin
insert into activities (comment_id, user_id) values (new.comment_id, new.user_id);
end#
delimiter ;
insert into comments (user_id) values (1),(2);
select * from comments;
select * from activities;
Editar:
mysql> /. d:/foo.sql
Database changed
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected (0.30 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.35 sec)
Query OK, 0 rows affected (0.07 sec)
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
+------------+---------+
| comment_id | user_id |
+------------+---------+
| 1 | 1 |
| 2 | 2 |
+------------+---------+
2 rows in set (0.00 sec)
+-------------+------------+---------+
| activity_id | comment_id | user_id |
+-------------+------------+---------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
+-------------+------------+---------+
2 rows in set (0.00 sec)
Estoy buscando crear un disparador de MySQL en una tabla. Básicamente, estoy creando una secuencia de actividad y necesito registrar acciones de los usuarios. Cuando un usuario hace un comentario, quiero que se active un disparador de base de datos en esa tabla y:
- Toma el ID de la última fila insertada (la identificación de la fila de comentarios).
- realice una INSERCIÓN en una tabla de actividades, usando datos de la última fila insertada.
Básicamente replicaré este disparador para eliminar comentarios.
Preguntas que tuve:
- ¿Es LAST_INSERT_ID () la mejor forma de obtener el ID?
- ¿Cómo almaceno correctamente los datos de la última fila de comentarios insertados para utilizarlos en mi declaración "INSERTAR en actividades"?
- ¿Debo utilizar una combinación de procedimientos almacenados y el disparador?
- ¿Cómo sería la estructura básica del gatillo?
¡Gracias! Han pasado algunos años desde que toqué algo relacionado con desencadenantes DB, procedimientos y funciones.