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.
Subscribe to:
Post Comments (Atom)
1 comment:
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
Post a Comment