首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写MySQL触发器以将行插入到另一个表中?

如何编写MySQL触发器以将行插入到另一个表中?
EN

Stack Overflow用户
提问于 2011-01-20 23:29:58
回答 1查看 99.1K关注 0票数 33

我希望在一个表上创建一个MySQL触发器。本质上,我正在创建一个活动流,需要记录用户的操作。当用户发表评论时,我希望在该表上触发一个数据库触发器,并:

  1. 获取最后插入行的ID (注释行的id )。
  2. 使用最后插入的行的数据对活动表执行插入。

实际上,我将复制删除注释的触发器。

我有以下问题:

statement?

  • Should
  1. 是获取id的最佳方法?
  2. 如何正确地存储上次插入的注释行中的数据,以便在我使用的“插入到活动”中使用?
  3. 触发器的基本结构是什么?

谢谢!我已经有几年没有接触到任何与DB触发器、过程和函数有关的内容了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-21 00:49:12

代码语言:javascript
复制
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;

编辑:

代码语言:javascript
复制
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)
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4753878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档