>데이터 베이스 >MySQL 튜토리얼 >MySQL 트리거를 사용하여 다른 테이블에 행을 삽입하는 방법은 무엇입니까?

MySQL 트리거를 사용하여 다른 테이블에 행을 삽입하는 방법은 무엇입니까?

원래의
2024-11-22 21:03:17777검색

How to Use MySQL Triggers to Insert Rows into Another Table?

MySQL 트리거를 사용하여 다른 테이블에 행 삽입

MySQL과 같은 관계형 데이터베이스 관리 시스템에서 트리거는 특정 데이터베이스 작업을 자동화하는 데 중추적인 역할을 합니다. 데이터 삽입, 삭제, 수정 등의 특정 이벤트에 대한 응답입니다. 이러한 맥락에서, 주어진 테이블에 행을 삽입하면 다른 테이블에 행을 삽입하는 트리거를 생성하는 주제를 자세히 살펴보겠습니다.

문제 이해

The 목표는 각 행 삽입 이벤트를 모니터링하는 "설명" 테이블에 MySQL 트리거를 생성하는 것입니다. 새 댓글 행이 삽입되면 트리거는 다음 작업을 수행해야 합니다.

  1. 새로 삽입된 댓글 행의 ID를 검색합니다.
  2. 검색된 ID를 활용하여 INSERT 작업을 수행합니다. 댓글 행의 관련 데이터를 "활동" 테이블로 전송합니다.

트리거 구조

이러한 기능을 구현하는 트리거의 기본 구조는 다음과 같습니다.

CREATE TRIGGER <trigger_name> AFTER INSERT ON <source_table>
FOR EACH ROW
BEGIN
    -- Retrieve the ID of the newly inserted row
    DECLARE last_insert_id INT;
    SET last_insert_id = LAST_INSERT_ID();

    -- Insert data into the "activities" table
    INSERT INTO <target_table> (column_list)
    VALUES (new.column1, new.column2, ..., last_insert_id);
END

트리거 구현

구현 시 다음 예를 고려하십시오.

-- Create the "comments" and "activities" tables
CREATE TABLE comments (
    comment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT UNSIGNED NOT NULL
) ENGINE=INNODB;

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;

-- Create the trigger to insert data into the "activities" table
CREATE TRIGGER comments_after_ins_trig AFTER INSERT ON comments
FOR EACH ROW
BEGIN
    -- Retrieve the ID of the newly inserted comment row
    DECLARE last_insert_id INT;
    SET last_insert_id = LAST_INSERT_ID();

    -- Insert data into the "activities" table
    INSERT INTO activities (comment_id, user_id)
    VALUES (new.comment_id, new.user_id);
END;

-- Insert some data into the "comments" table
INSERT INTO comments (user_id) VALUES (1), (2);

-- Query the "comments" and "activities" tables to observe the results
SELECT * FROM comments;
SELECT * FROM activities;

쿼리를 실행하면 "설명" 테이블에 삽입된 각 설명 행에 해당 행이 자동으로 "활동" 테이블에 삽입됩니다. 이는 원하는 결과를 달성하는 데 있어 트리거의 효과를 보여줍니다.

위 내용은 MySQL 트리거를 사용하여 다른 테이블에 행을 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.