programing

다른 테이블에 행을 삽입하도록 MySQL 트리거를 프로그래밍하는 방법은 무엇입니까?

starjava 2023. 10. 14. 09:28
반응형

다른 테이블에 행을 삽입하도록 MySQL 트리거를 프로그래밍하는 방법은 무엇입니까?

테이블에 MySQL 트리거를 만들려고 합니다.기본적으로, 저는 활동 스트림을 만들고 있고 사용자의 작업을 기록해야 합니다.사용자가 코멘트를 작성할 때 해당 테이블의 데이터베이스 트리거를 실행하고 다음을 수행합니다.

  1. 마지막으로 삽입한 행의 ID(댓글 행의 ID)를 가져옵니다.
  2. 마지막으로 삽입된 행의 데이터를 사용하여 활동 테이블에 INSERT를 수행합니다.

댓글 삭제를 위해 이 트리거를 기본적으로 복제하겠습니다.

질문:

  1. LAST_INSERT_ID()가 ID를 잡는 가장 좋은 방법입니까?
  2. 마지막으로 삽입한 주석 행의 데이터를 "활동에 삽입" 문장에 사용할 수 있도록 적절하게 저장하려면 어떻게 해야 합니까?
  3. 저장 프로시저와 트리거를 함께 사용해야 합니까?
  4. 트리거의 기본 구조는 어떻게 됩니까?

감사합니다! DB 트리거, 절차 및 기능과 관련하여 손을 댄 것은 몇 년 만입니다.

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;

편집:

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)

언급URL : https://stackoverflow.com/questions/4753878/how-to-program-a-mysql-trigger-to-insert-row-into-another-table

반응형