>데이터 베이스 >MySQL 튜토리얼 >MySQL 트리거는 어떻게 별도의 활동 테이블에 행을 삽입하여 사용자 의견을 효율적으로 기록할 수 있습니까?

MySQL 트리거는 어떻게 별도의 활동 테이블에 행을 삽입하여 사용자 의견을 효율적으로 기록할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-01 06:15:15851검색

How Can MySQL Triggers Efficiently Log User Comments by Inserting Rows into a Separate Activities Table?

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

데이터베이스 내에서 사용자 활동을 추적할 때 트리거는 강력한 도구가 될 수 있습니다. 지정된 테이블이 변경되면 특정 작업이나 계산이 자동으로 발생하도록 허용합니다. 이 시나리오에서 댓글 테이블에 트리거를 생성하면 활동 테이블에 해당 행을 삽입하여 사용자 작업이 기록됩니다.

마지막으로 삽입된 댓글 행을 식별하려면 LAST_INSERT_ID()를 사용할 수 있습니다. 이 함수는 가장 최근 삽입 작업에서 기본 키 열의 자동 증가된 값을 반환합니다.

마지막으로 삽입된 주석 행의 데이터는 새로 삽입된 값을 참조하는 NEW 키워드를 사용하여 저장할 수 있습니다. 예를 들어 댓글의 user_id 및 comment_id를 활동 테이블에 삽입하려면 다음 INSERT 문을 사용할 수 있습니다.

INSERT INTO activities (comment_id, user_id) VALUES (NEW.comment_id, NEW.user_id);

저장 프로시저는 추가적인 유연성을 제공할 수 있지만 이 경우 간단한 트리거로 충분합니다.

트리거 구조

트리거의 기본 구조는 다음과 같습니다.

CREATE TRIGGER <trigger_name>
AFTER INSERT ON <table_name>
FOR EACH ROW
BEGIN
  -- Insert into activities table using the NEW keyword
END

다음은 이러한 트리거를 구현하는 방법에 대한 완전한 예입니다.

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 트리거는 어떻게 별도의 활동 테이블에 행을 삽입하여 사용자 의견을 효율적으로 기록할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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