使用触发器对学生表操作进行日志记录
項(xiàng)目介紹
觸發(fā)器,就是一種特殊的存儲過程,觸發(fā)器和存儲過程一樣是一個能夠完成特定功能,存儲在數(shù)據(jù)庫服務(wù)器上的SQL片段,但是觸發(fā)器無需調(diào)用,當(dāng)對數(shù)據(jù)表中的數(shù)據(jù)執(zhí)行DML操作時自動觸發(fā)這個SQL片段的執(zhí)行,無需手動調(diào)用。
學(xué)生信息表(stu):記錄學(xué)生了的學(xué)號,姓名,性別,年齡
日志信息表(stu_log):記錄對學(xué)生信息的操作(記錄在xx時間對xx學(xué)生進(jìn)行了xx操作)
當(dāng)向stu表中進(jìn)行增加刪除修改學(xué)生信息時,同時要在stu_log表中添加一條操作日志
1、NEW與OLD關(guān)鍵字介紹
觸發(fā)器用于監(jiān)聽對數(shù)據(jù)表中數(shù)據(jù)的insert,delete,update操作,在觸發(fā)器中通常處理一些DML的關(guān)聯(lián)操作
我們可以使用’new’和’old’關(guān)鍵字在觸發(fā)器中獲取觸發(fā)這個觸發(fā)器的DML操作的數(shù)據(jù)
new:用于獲取insert操作添加的數(shù)據(jù),update修改后的數(shù)據(jù)
old:在觸發(fā)器中用于獲取delete操作刪除前的數(shù)據(jù),update修改前的數(shù)據(jù)
接下來我們在創(chuàng)建觸發(fā)器的時候,就可以充分使用這兩個關(guān)鍵字對學(xué)生表信息進(jìn)行關(guān)聯(lián)獲取。
2、創(chuàng)建觸發(fā)器
我們需要創(chuàng)建三個觸發(fā)器,分別執(zhí)行用戶對學(xué)生表(stu)進(jìn)行增加,修改,刪除操作時進(jìn)行自動記錄。
2.1增加學(xué)生信息的觸發(fā)器
CREATE TRIGGER stu_tri_insert AFTER INSERT ON stu FOR EACH ROW INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('添加',new.stu_name,'學(xué)生信息'))2.2修改學(xué)生信息的觸發(fā)器
CREATE TRIGGER stu_tri_update AFTER UPDATE ON stu FOR EACH ROW INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('[','進(jìn)行了修改操作',']','修改前為:',old.stu_name,' ','修改后為:',new.stu_name))2.3刪除學(xué)生信息的觸發(fā)器
CREATE TRIGGER stu_tri_delete AFTER DELETE ON stu FOR EACH ROW INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('刪除的學(xué)生信息為',old.stu_name))2.4查看觸發(fā)器
SHOW TRIGGERSstu_tri_insert,stu_tri_update,stu_tri_delete三個觸發(fā)器分別對應(yīng)著用戶對學(xué)生表(stu)執(zhí)行增刪改操作時,會添加進(jìn)日志信息表(stu_log)的信息。
3、最終實(shí)現(xiàn)效果
3.1當(dāng)對學(xué)生表(stu)執(zhí)行插入操作時
觸發(fā)器的操作被自動執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的添加操作記錄
3.2當(dāng)對學(xué)生表(stu)執(zhí)行修改操作時
觸發(fā)器的操作被自動執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的修改操作記錄
3.3當(dāng)對學(xué)生表(stu)執(zhí)行刪除操作時
觸發(fā)器的操作被自動執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的刪除操作記錄
4、文中出現(xiàn)的增刪改SQL語句
INSERT INTO stu(stu_num,stu_name,stu_gender,stu_age) VALUES(1005,'夏北','女',25); UPDATE stu SET stu_name='夏南' WHERE stu_num = 1005 DELETE FROM stu WHERE stu_num = 1005總結(jié)
以上是生活随笔為你收集整理的使用触发器对学生表操作进行日志记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective Java 第三版 中
- 下一篇: 汉王ocr sdk android,汉王