淺談MySQL中的觸發(fā)器
在很多時(shí)候,干得利索不如想的明白。方案應(yīng)該根據(jù)場景來設(shè)計(jì),不是盲目的依靠經(jīng)驗(yàn),當(dāng)然這也算新經(jīng)驗(yàn)!
需求是把公司的幾套公共系統(tǒng)做成通過郵箱用戶名和密碼認(rèn)證,只需記住一對用戶名密碼,簡單為上,只允許用戶在ExtMail的web頁面修改密碼!在做論壇認(rèn)證的時(shí)候,由于論壇的復(fù)雜性,想到了如下的幾個(gè)方案:
通過OAuth2.0做認(rèn)證,或者自己寫接口,問題是只聽過,沒玩過!
在郵箱修改時(shí),也提交到論壇的數(shù)據(jù)庫。可惜不會ExtMail的Perl代碼,且修改代碼工作量太大!
先前已經(jīng)把線上郵箱用戶表同步到內(nèi)網(wǎng),可以做數(shù)據(jù)庫復(fù)制,可論壇和郵箱的數(shù)據(jù)庫字段有較大出入,還是要改大量代碼!
使用觸發(fā)器更新論壇數(shù)據(jù)庫的用戶表!
在仔細(xì)考慮過前面三種辦法之后,在能力范圍內(nèi),已經(jīng)把PHP編寫的論壇認(rèn)證方式修改成適應(yīng)郵箱的加鹽認(rèn)證方式,并測試了導(dǎo)入郵箱用戶名和密碼認(rèn)證。已經(jīng)修改過論壇數(shù)據(jù)庫字段類型,部分后端代碼!最后一步是自動把郵箱數(shù)據(jù)庫的用戶表變更同步到論壇數(shù)據(jù)庫的用戶表。
在討論數(shù)據(jù)庫復(fù)制時(shí),發(fā)現(xiàn)還是最后一種觸發(fā)器的辦法可行性最好,通過對論壇用戶表的大多數(shù)字段設(shè)置默認(rèn)值,做到只添加修改其中的賬號,密碼和郵件三個(gè)字段即可完成對論壇用戶的操作,下面是根據(jù)實(shí)際情況編寫的MySQL觸發(fā)器!
觸發(fā)器添加用戶
use extmail; DELIMITER // create trigger add_bbsuser after insert on extmail.mailbox for each row begin insert into xiuno_bbs.bbs_user(username,password,email) \ values (new.name,new.password,new.username); end // DELIMITER ;
觸發(fā)器更新用戶
use extmail; DELIMITER // create trigger update_bbsuser after update on extmail.mailbox for each row begin update xiuno_bbs.bbs_user set username=new.name,\ password=new.password where email=new.username; end // DELIMITER ;
觸發(fā)器刪除用戶
use extmail; DELIMITER // create trigger delete_bbsuser after delete on extmail.mailbox for each row begin delete from xiuno_bbs.bbs_user where email=old.username; end // DELIMITER ;
我踩過的坑
剛開始編寫觸發(fā)器,從網(wǎng)上找來的命令都不能用,完全一籌莫展之際領(lǐng)悟到,觸發(fā)器和數(shù)據(jù)庫是綁定的,必須先use extmail到要觸發(fā)的extmail數(shù)據(jù)庫中,才能對這個(gè)庫的操作做相應(yīng)的觸發(fā),后來就沒有問題了!我果然是MySQL小白!
相關(guān)文章
python 實(shí)時(shí)得到cpu和內(nèi)存的使用情況方法
今天小編就為大家分享一篇python 實(shí)時(shí)得到cpu和內(nèi)存的使用情況方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06關(guān)于CUDA out of memory的解決方案
這篇文章主要介紹了關(guān)于CUDA out of memory的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python 實(shí)現(xiàn)鏈表實(shí)例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)鏈表實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04Python中基礎(chǔ)的socket編程實(shí)戰(zhàn)攻略
Python擁有內(nèi)置的socket模塊,可以用簡潔明了的代碼來進(jìn)行socket通信操作,這里我們就為大家整理了一份Python中基礎(chǔ)的socket編程實(shí)戰(zhàn)攻略,需要的朋友可以參考下.2016-06-06ubuntu環(huán)境下python虛擬環(huán)境的安裝過程
這篇文章主要介紹了ubuntu環(huán)境下python虛擬環(huán)境的安裝搭建過程 ,需要的朋友可以參考下2018-01-01Pycharm使用Database?Navigator連接mysql數(shù)據(jù)庫全過程
這篇文章主要介紹了Pycharm使用Database?Navigator連接mysql數(shù)據(jù)庫全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Python使用Selenium實(shí)現(xiàn)瀏覽器打印預(yù)覽功能
在Web開發(fā)中,打印預(yù)覽是一個(gè)常見的功能需求,通過打印預(yù)覽,我們可以預(yù)覽和調(diào)整網(wǎng)頁的打印布局、樣式和內(nèi)容,Python的Selenium庫是一個(gè)強(qiáng)大的工具,可以自動化瀏覽器操作,包括打印預(yù)覽,本文將介紹如何使用Python Selenium庫來實(shí)現(xiàn)瀏覽器的打印預(yù)覽功能2023-11-11keras實(shí)現(xiàn)VGG16方式(預(yù)測一張圖片)
這篇文章主要介紹了keras實(shí)現(xiàn)VGG16方式(預(yù)測一張圖片),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python3爬蟲中關(guān)于Ajax分析方法的總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲中關(guān)于Ajax分析方法的總結(jié),需要的朋友們可以學(xué)習(xí)下。2020-07-07