日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 触发器不能同时 insert or update or delete_运维日记|SQL server 那点事——DML触发器...

發(fā)布時(shí)間:2025/4/5 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 触发器不能同时 insert or update or delete_运维日记|SQL server 那点事——DML触发器... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

11月19日,21點(diǎn),小編正六指霸屏,決賽圈1V4,忽然,電話響了,這種感覺很熟悉,不錯,上次差點(diǎn)推掉對面水晶的那一幕又上演了……作為一名美創(chuàng)的員工,客戶才是第一位,我毫不猶豫的摁下了接聽鍵。

?

XXX嗎?我數(shù)據(jù)庫有人篡改了某張表,我一聽,這個問題應(yīng)該難度不大(自信ing!),趕緊回應(yīng)客戶:

您數(shù)據(jù)庫有保留最近一次完整備份以及之后的完整日志嗎?

1、有的話可以用完整備份恢復(fù)+日志備份(誤操作前的LSN恢復(fù))

2、也可以通過sys.fn_dblog()獲取二進(jìn)制日志,再解析出來誤操作的語句進(jìn)行恢復(fù)

結(jié)果客戶的需求并不是該操作如何恢復(fù),而是想確定這個篡改表的始作俑者,以及如何去記錄以后數(shù)據(jù)庫這種類似的情況。我很清楚的告訴客戶,再沒部署任何監(jiān)控記錄的基礎(chǔ)上,解析日志也只能獲取相關(guān)的數(shù)據(jù)記錄,無法獲取更過的信息(當(dāng)然,不排除某種高端工具可能會獲取)。

至于以后如何防患,如何記錄,這個可以通過SQL server觸發(fā)器或者審計(jì)功能來實(shí)現(xiàn),而本文,將著重介紹DML觸發(fā)器以及它如何實(shí)現(xiàn)客戶的需求,請看下文。

01

DML觸發(fā)器介紹

DML觸發(fā)器是一種特殊類型的存儲過程,它在指定的表中的數(shù)據(jù)發(fā)生變化時(shí)自動生效。喚醒調(diào)用觸發(fā)器以響應(yīng) INSERT、UPDATE 或 DELETE 語句。

02

常見的DML觸發(fā)器

2.1 創(chuàng)建語句

2.2 插入測試

可見,因?yàn)橛|發(fā)器的緣故,不滿足要求的數(shù)據(jù)無法插入(這里的age>=100雖有悖常理,實(shí)則祝大家都長命百歲,哈哈)

回到我們的主旨,這種觸發(fā)器雖然能起到防患的作用,但是依舊無法達(dá)到我們預(yù)期的效果,我們不僅要防患于未然,更要能事事追蹤溯源,話不多說,請看下文,也是我們這篇文章最最重要的干貨!!!

03

如何用DML觸發(fā)器記錄操作

實(shí)現(xiàn)原理:

DML操作記錄,簡單的說,就是日志類觸發(fā)器,也就是盡量全面地反映數(shù)據(jù)庫表所進(jìn)行的insert、update、delete操作,便于日后翻閱。

1、創(chuàng)建測試表:

2、創(chuàng)建DML日志表:

3、創(chuàng)建DML觸發(fā)器:

4、查看當(dāng)前觸發(fā)器日志表:

5、用hostnameadministrator執(zhí)行DML操作:

執(zhí)行結(jié)果為:

6、再用dsz登錄執(zhí)行DML操作:

執(zhí)行結(jié)果為:

7、查看DML日志表:

顯而易見,剛才的6次insert,2次update(一次update對應(yīng)兩條記錄,因?yàn)榉謩e記錄了name的更改前后的值—),以及2次delete,都清楚的記錄在該表內(nèi)。

眼尖的網(wǎng)友可能要問,USERID和HOSTNAME很清楚,最后這兩列有什么特殊的含義嗎?

我們的觸發(fā)器日志表如果僅僅記錄一些基礎(chǔ)的信息,還遠(yuǎn)遠(yuǎn)不夠,我們還要將更改的數(shù)據(jù)挖掘出來,以便在需要的時(shí)候進(jìn)行逆向DML。

那么,我們是不是也可以修改日志表,添加更多我們需要捕獲的信息呢,答案是肯定的,不過這個就交給廣大網(wǎng)友去探索、去更改了……

8、truncate 掉test表,再查看DML日志表:

可以看到,依舊只有12條記錄,這是為什么呢?明明test的表都被刪干凈了啊???

莫慌莫慌,大家都知道,truncate和delete不同,它屬于DDL語句,所以,關(guān)于DDL的觸發(fā)器,且看下回分解,不要走開哦。

美創(chuàng)運(yùn)維中心數(shù)據(jù)庫服務(wù)團(tuán)隊(duì)擁有Oracle ACE 1人、OCM 10余人、數(shù)十名Oracle OCP、MySQL OCP、紅帽RHCA、中間件weblogic、tuxedo認(rèn)證、達(dá)夢工程師 ,著有《Oracle DBA實(shí)戰(zhàn)攻略》,《Oracle數(shù)據(jù)庫性能優(yōu)化方法和最佳實(shí)踐》,《Oracle內(nèi)核技術(shù)揭秘》等多本數(shù)據(jù)運(yùn)維優(yōu)化書籍。目前運(yùn)維各類數(shù)據(jù)庫合計(jì)2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、達(dá)夢等主流商業(yè)和開源數(shù)據(jù)庫。并成為首批國內(nèi)達(dá)夢戰(zhàn)略合作伙伴之一,擁有海量經(jīng)驗(yàn)和完善的人員培養(yǎng)體系。并同時(shí)提供超融合,私有云整體解決方案。

轉(zhuǎn)自杭州美創(chuàng)科技有限公司公眾號,如需二次轉(zhuǎn)載,請聯(lián)系marketing@mchz.com.cn

總結(jié)

以上是生活随笔為你收集整理的mysql 触发器不能同时 insert or update or delete_运维日记|SQL server 那点事——DML触发器...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。