Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Pencetus MySQL untuk Memasukkan Baris ke dalam Jadual Lain?

Bagaimana Menggunakan Pencetus MySQL untuk Memasukkan Baris ke dalam Jadual Lain?

asal
2024-11-22 21:03:17768semak imbas

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

Memasukkan Baris ke dalam Jadual lain menggunakan MySQL Trigger

Dalam sistem pengurusan pangkalan data hubungan seperti MySQL, pencetus memainkan peranan penting dalam mengautomasikan tindakan pangkalan data tertentu sebagai tindak balas kepada peristiwa tertentu, seperti sisipan data, pemadaman atau pengubahsuaian. Dalam konteks ini, mari kita mendalami topik mencipta pencetus yang memasukkan baris ke dalam jadual lain selepas sisipan baris dalam jadual tertentu.

Memahami Isu

The matlamatnya adalah untuk mencipta pencetus MySQL pada jadual "komen" yang memantau setiap acara sisipan baris. Apabila baris ulasan baharu dimasukkan, pencetus harus melaksanakan tugas berikut:

  1. Dapatkan ID baris ulasan yang baru dimasukkan.
  2. Gunakan ID yang diambil untuk melaksanakan operasi INSERT ke dalam jadual "aktiviti", memindahkan data yang berkaitan daripada ulasan baris.

Struktur Pencetus

Struktur asas pencetus untuk melaksanakan fungsi ini melibatkan perkara berikut:

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

Pencetus Pelaksanaan

Untuk menunjukkan pelaksanaan, pertimbangkan perkara berikut contoh:

-- 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;

Setelah melaksanakan pertanyaan, anda akan mendapati bahawa untuk setiap baris ulasan yang dimasukkan ke dalam jadual "ulasan", baris yang sepadan dimasukkan secara automatik ke dalam jadual "aktiviti". Ini menunjukkan keberkesanan pencetus dalam mencapai hasil yang diinginkan.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pencetus MySQL untuk Memasukkan Baris ke dalam Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn