I'm looking to create a MySQL trigger on a table. Essentially, I'm creating an activity stream and need to log actions by users. When a user makes a comment, I want a database trigger on that table to fire and:
I'll essentially replicate this trigger for deleting comments.
Questions I had:
Thanks! It's been a few years since I've touched anything to do with DB triggers, procedures and functions.
To create a trigger, we need to change the delimiter. Inserting the row into Table1 activates the trigger and inserts the records into Table2. To insert record in Table1. To check if the records are inserted in both tables or not.
First, we will specify the name of the trigger that we want to create. It should be unique within the schema. Second, we will specify the trigger action time, which should be AFTER INSERT clause to invoke the trigger. Third, we will specify the name of a table to which the trigger is associated.
In this syntax: First, specify the name of the trigger that you want to create in the CREATE TRIGGER clause. Second, use BEFORE INSERT clause to specify the time to invoke the trigger. Third, specify the name of the table that the trigger is associated with after the ON keyword.
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;
Edit:
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With