資料庫:mysql內建功能-觸發器

來源:互聯網
上載者:User

標籤:prim   auto   準備   mit   color   ...   success   失敗   create   

一 觸發器

使用觸發器可以定製使用者對錶進行【增、刪、改】操作時前後的行為,注意:沒有查詢

一 建立觸發器
# 插入前CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROWBEGIN    ...END# 插入後CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROWBEGIN    ...END# 刪除前CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROWBEGIN    ...END# 刪除後CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROWBEGIN    ...END# 更新前CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROWBEGIN    ...END# 更新後CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROWBEGIN    ...END

 

#準備表CREATE TABLE cmd (    id INT PRIMARY KEY auto_increment,    USER CHAR (32),    priv CHAR (10),    cmd CHAR (64),    sub_time datetime, #提交時間    success enum (‘yes‘, ‘no‘) #0代表執行失敗);CREATE TABLE errlog (    id INT PRIMARY KEY auto_increment,    err_cmd CHAR (64),    err_time datetime);#建立觸發器delimiter //CREATE TRIGGER tri_after_insert_cmd AFTER INSERT ON cmd FOR EACH ROWBEGIN    IF NEW.success = ‘no‘ THEN #等值判斷只有一個等號            INSERT INTO errlog(err_cmd, err_time) VALUES(NEW.cmd, NEW.sub_time) ; #必須加分號      END IF ; #必須加分號END//delimiter ;#往表cmd中插入記錄,觸發觸發器,根據IF的條件決定是否插入錯誤記錄檔INSERT INTO cmd (    USER,    priv,    cmd,    sub_time,    success)VALUES    (‘egon‘,‘0755‘,‘ls -l /etc‘,NOW(),‘yes‘),    (‘egon‘,‘0755‘,‘cat /etc/passwd‘,NOW(),‘no‘),    (‘egon‘,‘0755‘,‘useradd xxx‘,NOW(),‘no‘),    (‘egon‘,‘0755‘,‘ps aux‘,NOW(),‘yes‘);#查詢錯誤記錄檔,發現有兩條mysql> select * from errlog;+----+-----------------+---------------------+| id | err_cmd         | err_time            |+----+-----------------+---------------------+|  1 | cat /etc/passwd | 2017-09-14 22:18:48 ||  2 | useradd xxx     | 2017-09-14 22:18:48 |+----+-----------------+---------------------+rows in set (0.00 sec)

  

特別的:NEW表示即將插入的資料行,OLD表示即將刪除的資料行。

二 使用觸發器

觸發器無法由使用者直接調用,而知由於對錶的【增/刪/改】操作被動引發的。

三 刪除觸發器
drop trigger tri_after_insert_cmd;

  

資料庫:mysql內建功能-觸發器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.