Make Trigger in MySQL

Using MySQL triggers, I want to sync content between two tables; I have table “user” and table “users”, each have similar columns “last_name” “first_name” “user_id” …etc, and when a row gets written to table “users”, I wanted that record to be replicated to “user”. In this case, I’d recommend calling a stored procedure to perform this type of replication. – almost identical tables. copying data from user to users create table user (userid int auto_increment primary key, fname varchar(10), lname varchar(10)); create table users (userid int primary key, fname varchar(10), lname varchar(10)); delimiter | create procedure copy_row(uid int) begin INSERT INTO users (userid, fname, lname) SELECT userid, fname, lname from user WHERE userid = uid; end; | delimiter ; mysql> insert into user (fname, lname) values (’joe’, ’smith’), (’steve’, ‘brown’),(’jon’, ‘haddad’); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> call copy_row(1); Query OK, 1 row affected (0.01 sec) mysql> select * from user; +——–+——-+——–+ | userid | fname | lname | +——–+——-+——–+ | 1 | joe | smith | | 2 | steve | brown | | 3 | jon | haddad | +——–+——-+——–+ 3 rows in set (0.00 sec) mysql> select * from users; +——–+——-+——-+ | userid | fname | lname | +——–+——-+——-+ | 1 | joe | smith | +——–+——-+——-+ 1 row in set (0.00 sec) If you really want to do this with a trigger, you can do something like this: delimiter | create trigger user_ins AFTER insert on user for each row begin call copy_row(NEW.userid); end; | create trigger user_upd AFTER update on user for each row begin call copy_row(NEW.userid); end; | create trigger user_del AFTER delete on user for each row begin delete from users WHERE userid = OLD.userid; end; | delimiter ; mysql> insert into user (fname, lname) values (’octavious’, ‘jones’); Query OK, 1 row affected (0.00 sec) mysql> select * from users; +——–+———–+——-+ | userid | fname | lname | +——–+———–+——-+ | 1 | joe | smith | | 4 | octavious | jones | +——–+———–+——-+ 2 rows in set (0.00 sec) Hopefully this helps.

1 comment:

Anonymous said...

otodidak-stuff.blogspot.com is very informative. The article is very professionally written. I enjoy reading otodidak-stuff.blogspot.com every day.
fast cash loan
online payday loans