瀏覽量:107次
數(shù)據(jù)庫(kù)觸發(fā)器是SQL server 提供給程序員和數(shù)據(jù)分析員來(lái)保證數(shù)據(jù)完整性的一種方法,在當(dāng)我們?cè)谧鲇脩裟K的表設(shè)計(jì)的時(shí)候,建了聯(lián)用戶信息表(t_user)和賬號(hào)表(t_account),其中賬號(hào)表(t_account)用來(lái)進(jìn)行賬號(hào)的注冊(cè) ,密碼的修改等操作,而用戶表(t_user)則用來(lái)存儲(chǔ)用戶的基本信息(比如:姓名,年齡等),通常我們會(huì)在 t_user中創(chuàng)建外鍵(userid)進(jìn)行關(guān)聯(lián)t_account以保證每個(gè)賬號(hào)下對(duì)應(yīng)一個(gè)用戶信息,當(dāng)賬號(hào)(t_account)注冊(cè)成功,這時(shí)則可以使用數(shù)據(jù)庫(kù)觸發(fā)器來(lái)實(shí)現(xiàn)在用戶(t_user)中實(shí)時(shí)地、準(zhǔn)確地添加相應(yīng)信息,所以是一個(gè)可以提高我們處理數(shù)據(jù)的工具,因此陽(yáng)泰小編就來(lái)給大家介紹一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)觸發(fā)器的寫(xiě)法。
語(yǔ)法:
CREATE
? ? TRIGGER `jony_keer`.`ins_account` AFTER INSERT
? ? ON `jony_keer`.`t_account`
? ? FOR EACH ROW BEGIN
? ? INSERT INTO `t_user`(`userid`,`cellphone`,`account_psd`)? VALUES? (new.`account_id`,new.`cellphone`,new.`account_psd`);
? ? END$$
解析:
TRIGGER? 觸發(fā)器
`jony_keer`.`ins_account` 觸發(fā)器名稱,jony_keer是我的數(shù)據(jù)庫(kù)名字,ins_account 才是實(shí)際的觸發(fā)器名稱
AFTER 表示執(zhí)行條件,有 BEFORE(之前 )AFTER(之后)
INSERT ON 表示在執(zhí)行了插入操作? 有INSERT/UPDATE/DELETE 三種?
`jony_keer`.`t_account` 接下來(lái)的這個(gè)是表示觸發(fā)器所在的表(可以理解為觸發(fā)器在t_account 表插入一組出具后執(zhí)行)
FOR EACH ROW BEGIN? 固定語(yǔ)法,后面跟你要做的事情例如我要做的事情是在t_user表中插入
`userid`,`cellphone`,`account_psd` 三個(gè)記錄
INSERT INTO `t_user`(`userid`,`cellphone`,`account_psd`)? VALUES? (new.`account_id`,new.`cellphone`,new.`account_psd`);
?其中new是t_account 表中插入的數(shù)據(jù) ,我們把 t_account 表中插入的? account_id? cellphone account_psd 賦值給t_user表中的 userid? cellphone account_psd ,這樣一個(gè)簡(jiǎn)單的觸發(fā)器就做好了。
以下是具體的表結(jié)構(gòu):
t_account
t_user
可以看到我們兩個(gè)表中目前還沒(méi)有數(shù)據(jù),接下來(lái)我們要給表t_account中添加一組數(shù)據(jù),看看t_user表是否會(huì)給我們帶來(lái)驚喜,這里我已經(jīng)做好了程序接口,只需要調(diào)用一下就好了。
/**
?* 注冊(cè)
?* @param cellphone
?* @param psd
?* @return
?*/
@RequestMapping(value = "register", method = RequestMethod.POST)
@ResponseBody
public ResponseModel registerController(@RequestParam(value = "cellphone", required = true) String cellphone, @RequestParam(value = "psd", required = true) String psd) {
? ? return service.insertRegister(cellphone,psd);
}
/**
?* 插入信息(注冊(cè)賬號(hào))INSERT
?*/
public ResponseModel insertRegister(String cellphone, String psd){
? ? if (!MobileUtils.isMobileNO(cellphone)) {
? ? ? ? return new ResponseModel(false, "手機(jī)號(hào)不正確!");
? ? }
? ? int success = getActIsExist(cellphone);
? ? if (success == 1) {
? ? ? ? return new ResponseModel(false, "該手機(jī)號(hào)已經(jīng)注冊(cè),請(qǐng)前往登錄。");
? ? }
? ? int i=0;
? ? try {
? ? ? ? i = accountRepository.insertRegisterModelOne(cellphone,psd);
? ? }catch (Exception e){
? ? ? ? i=0;
? ? }
? ? if (i > 0) {
? ? ? ? return new ResponseModel(true, "注冊(cè)成功!");
? ? } else {
? ? ? ? return new ResponseModel(false, "注冊(cè)失??!");
? ? }
}
//新增一條(注冊(cè))
? ? @Query(value = "INSERT INTO t_account (cellphone,account_psd) VALUES (?1, ?2)", nativeQuery = true)
? ? @Modifying
? ? int insertRegisterModelOne(String cellphone, String account_psd);
上面三個(gè)段代碼是我們已經(jīng)做好的注冊(cè)接口,接下來(lái)我們就去啟動(dòng)服務(wù)器開(kāi)始驗(yàn)證吧,打開(kāi)Postman 調(diào)用服務(wù)器接口。
我們看下t_account中的數(shù)據(jù):
我們看下t_user中的數(shù)據(jù):
這時(shí)我們可以看到,t_account表中的 account_id cellphone? account_psd 已經(jīng)插入進(jìn)去,并且 t_user表中同時(shí)也插入userid cellphone和account_psd,而且是一一對(duì)應(yīng)的。
好了,一個(gè)簡(jiǎn)單的觸發(fā)器就是這么完成的,希望以上的內(nèi)容對(duì)你能夠有幫助。
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點(diǎn),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請(qǐng)您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們?cè)诖_認(rèn)后,會(huì)立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776