使用触发器对学生表操作进行日志记录
項(xiàng)目介紹
觸發(fā)器,就是一種特殊的存儲(chǔ)過(guò)程,觸發(fā)器和存儲(chǔ)過(guò)程一樣是一個(gè)能夠完成特定功能,存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段,但是觸發(fā)器無(wú)需調(diào)用,當(dāng)對(duì)數(shù)據(jù)表中的數(shù)據(jù)執(zhí)行DML操作時(shí)自動(dòng)觸發(fā)這個(gè)SQL片段的執(zhí)行,無(wú)需手動(dòng)調(diào)用。
學(xué)生信息表(stu):記錄學(xué)生了的學(xué)號(hào),姓名,性別,年齡
日志信息表(stu_log):記錄對(duì)學(xué)生信息的操作(記錄在xx時(shí)間對(duì)xx學(xué)生進(jìn)行了xx操作)
當(dāng)向stu表中進(jìn)行增加刪除修改學(xué)生信息時(shí),同時(shí)要在stu_log表中添加一條操作日志
1、NEW與OLD關(guān)鍵字介紹
觸發(fā)器用于監(jiān)聽(tīng)對(duì)數(shù)據(jù)表中數(shù)據(jù)的insert,delete,update操作,在觸發(fā)器中通常處理一些DML的關(guān)聯(lián)操作
我們可以使用’new’和’old’關(guān)鍵字在觸發(fā)器中獲取觸發(fā)這個(gè)觸發(fā)器的DML操作的數(shù)據(jù)
new:用于獲取insert操作添加的數(shù)據(jù),update修改后的數(shù)據(jù)
old:在觸發(fā)器中用于獲取delete操作刪除前的數(shù)據(jù),update修改前的數(shù)據(jù)
接下來(lái)我們?cè)趧?chuàng)建觸發(fā)器的時(shí)候,就可以充分使用這兩個(gè)關(guān)鍵字對(duì)學(xué)生表信息進(jìn)行關(guān)聯(lián)獲取。
2、創(chuàng)建觸發(fā)器
我們需要?jiǎng)?chuàng)建三個(gè)觸發(fā)器,分別執(zhí)行用戶對(duì)學(xué)生表(stu)進(jìn)行增加,修改,刪除操作時(shí)進(jìn)行自動(dòng)記錄。
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三個(gè)觸發(fā)器分別對(duì)應(yīng)著用戶對(duì)學(xué)生表(stu)執(zhí)行增刪改操作時(shí),會(huì)添加進(jìn)日志信息表(stu_log)的信息。
3、最終實(shí)現(xiàn)效果
3.1當(dāng)對(duì)學(xué)生表(stu)執(zhí)行插入操作時(shí)
觸發(fā)器的操作被自動(dòng)執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的添加操作記錄
3.2當(dāng)對(duì)學(xué)生表(stu)執(zhí)行修改操作時(shí)
觸發(fā)器的操作被自動(dòng)執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的修改操作記錄
3.3當(dāng)對(duì)學(xué)生表(stu)執(zhí)行刪除操作時(shí)
觸發(fā)器的操作被自動(dòng)執(zhí)行,日志信息表(stu_log)新增了學(xué)生表(stu)所執(zhí)行的刪除操作記錄
4、文中出現(xiàn)的增刪改SQL語(yǔ)句
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é)
以上是生活随笔為你收集整理的使用触发器对学生表操作进行日志记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Effective Java 第三版 中
- 下一篇: 汉王ocr sdk android,汉王