新聞中心
觸發(fā)器簡介
觸發(fā)器(Trigger)是MySQL中一種特殊的存儲過程,它會在特定事件(如插入、更新或刪除操作)發(fā)生時自動執(zhí)行,通過使用觸發(fā)器,可以實現(xiàn)兩表聯(lián)動操作,即當一個表的數(shù)據(jù)發(fā)生變化時,自動對另一個表進行相應的操作。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供巨野網(wǎng)站建設、巨野做網(wǎng)站、巨野網(wǎng)站設計、巨野網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、巨野企業(yè)網(wǎng)站模板建站服務,10多年巨野做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
創(chuàng)建觸發(fā)器的語法
創(chuàng)建觸發(fā)器的語法如下:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name FOR EACH ROW
BEGIN
觸發(fā)器要執(zhí)行的操作
END;
trigger_name:觸發(fā)器的名稱;
trigger_time:觸發(fā)器的觸發(fā)時機,可以是BEFORE(之前)或AFTER(之后);
trigger_event:觸發(fā)器的觸發(fā)事件,可以是INSERT(插入)、UPDATE(更新)或DELETE(刪除);
table_name:觸發(fā)器所在的表名;
FOR EACH ROW:表示對每一行數(shù)據(jù)都執(zhí)行觸發(fā)器;
BEGIN ... END:觸發(fā)器要執(zhí)行的操作。
實現(xiàn)兩表聯(lián)動操作的示例
假設有兩個表:orders(訂單表)和order_details(訂單詳情表),當orders表中插入新數(shù)據(jù)時,需要自動向order_details表中插入相應的數(shù)據(jù)。
創(chuàng)建orders表和order_details表:
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20) NOT NULL,
create_time DATETIME NOT NULL
);
CREATE TABLE order_details (
id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders (id)
);
接下來,創(chuàng)建一個觸發(fā)器,實現(xiàn)當orders表中插入新數(shù)據(jù)時,自動向order_details表中插入相應的數(shù)據(jù):
DELIMITER //
CREATE TRIGGER insert_order_detail
AFTER INSERT
ON orders FOR EACH ROW
BEGIN
INSERT INTO order_details (order_id, product_id, quantity)
VALUES (NEW.id, 1, 1); 這里可以根據(jù)實際需求修改product_id和quantity的值
END;
//
DELIMITER ;
現(xiàn)在,當向orders表中插入新數(shù)據(jù)時,觸發(fā)器會自動向order_details表中插入相應的數(shù)據(jù):
INSERT INTO orders (order_no, create_time) VALUES ('20220101', NOW());
查詢order_details表,可以看到已經(jīng)自動插入了相應的數(shù)據(jù):
SELECT * FROM order_details;
注意事項
1、觸發(fā)器會占用一定的系統(tǒng)資源,如果觸發(fā)器的數(shù)量過多或者觸發(fā)器的操作過于復雜,可能會影響數(shù)據(jù)庫的性能,在使用觸發(fā)器時要謹慎。
2、觸發(fā)器可以嵌套使用,但要避免循環(huán)調用,否則可能導致無限循環(huán)。
文章名稱:mysql觸發(fā)器實現(xiàn)兩表聯(lián)動操作
轉載來于:http://www.dlmjj.cn/article/dhgsgsi.html


咨詢
建站咨詢
