Jak zaprogramować WYZWALACZ MySQL do wstawiania wiersza do innej tabeli?
Chcę utworzyć WYZWALACZ MySQL na tabeli. Zasadniczo tworzę Strumień aktywności i muszę rejestrować akcje użytkowników. Gdy użytkownik robi komentarz, chcę aby WYZWALACZ bazy danych na tej tabeli odpalił i:
- pobranie ID ostatnio wstawionego wiersza (id wiersza komentarza).
- Wykonaj wstawianie do tabeli działań, używając danych z ostatniego wstawionego wiersza.
W zasadzie powtórzę ten wyzwalacz do usuwania komentarzy.
Pytania I miał:
- Czy LAST_INSERT_ID () jest najlepszym sposobem na pobranie id?
- Jak poprawnie zapisać dane z ostatnio wstawionego wiersza komentarza do użycia w instrukcji "INSERT into activities"?
- Czy powinienem używać kombinacji procedur składowanych, jak również wyzwalacza? Jak wyglądałaby podstawowa struktura spustu?
Dzięki! Minęło kilka lat, odkąd dotknąłem czegoś związanego z wyzwalaczami DB, procedurami i funkcjami.
27
Author: Emre Yazici, 2011-01-21
1 answers
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)
39
Author: Jon Black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 19:15:11
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 19:15:11