數(shù)據(jù)庫觸發(fā)器是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,在當我們在做用戶模塊的表設(shè)計的時候,建了聯(lián)用戶信息表(t_user)和賬號表(t_account),其中賬號表(t_account)用來進行賬號的注冊 ,密碼的修改等操作,而用戶表(t_user)則用來存儲用戶的基本信息(比如:姓名,年齡等),通常我們會在 t_user中創(chuàng)建外鍵(userid)進行關(guān)聯(lián)t_account以保證每個賬號下對應(yīng)一個用戶信息,當賬號(t_account)注冊成功,這時則可以使用數(shù)據(jù)庫觸發(fā)器來實現(xiàn)在用戶(t_user)中實時地、準確地添加相應(yīng)信息,所以是一個可以提高我們處理數(shù)據(jù)的工具,因此小編就來給大家介紹一個簡單的數(shù)據(jù)庫觸發(fā)器的寫法。
語法:
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ù)庫名字,ins_account 才是實際的觸發(fā)器名稱
AFTER 表示執(zhí)行條件,有 BEFORE(之前 )AFTER(之后)
INSERT ON 表示在執(zhí)行了插入操作 有INSERT/UPDATE/DELETE 三種
`jony_keer`.`t_account` 接下來的這個是表示觸發(fā)器所在的表(可以理解為觸發(fā)器在t_account 表插入一組出具后執(zhí)行)
FOR EACH ROW BEGIN 固定語法,后面跟你要做的事情例如我要做的事情是在t_user表中插入
`userid`,`cellphone`,`account_psd` 三個記錄
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 ,這樣一個簡單的觸發(fā)器就做好了。
以下是具體的表結(jié)構(gòu):
t_account
t_user
可以看到我們兩個表中目前還沒有數(shù)據(jù),接下來我們要給表t_account中添加一組數(shù)據(jù),看看t_user表是否會給我們帶來驚喜,這里我已經(jīng)做好了程序接口,只需要調(diào)用一下就好了。
/**
* 注冊
* @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);
}
/**
* 插入信息(注冊賬號)INSERT
*/
public ResponseModel insertRegister(String cellphone, String psd){
if (!MobileUtils.isMobileNO(cellphone)) {
return new ResponseModel(false, "手機號不正確!");
}
int success = getActIsExist(cellphone);
if (success == 1) {
return new ResponseModel(false, "該手機號已經(jīng)注冊,請前往登錄。");
}
int i=0;
try {
i = accountRepository.insertRegisterModelOne(cellphone,psd);
}catch (Exception e){
i=0;
}
if (i > 0) {
return new ResponseModel(true, "注冊成功!");
} else {
return new ResponseModel(false, "注冊失??!");
}
}
//新增一條(注冊)
@Query(value = "INSERT INTO t_account (cellphone,account_psd) VALUES (?1, ?2)", nativeQuery = true)
@Modifying
int insertRegisterModelOne(String cellphone, String account_psd);
上面三個段代碼是我們已經(jīng)做好的注冊接口,接下來我們就去啟動服務(wù)器開始驗證吧,打開Postman 調(diào)用服務(wù)器接口。
我們看下t_account中的數(shù)據(jù):
我們看下t_user中的數(shù)據(jù):
這時我們可以看到,t_account表中的 account_id cellphone account_psd 已經(jīng)插入進去,并且 t_user表中同時也插入userid cellphone和account_psd,而且是一一對應(yīng)的。
好了,一個簡單的觸發(fā)器就是這么完成的,希望以上的內(nèi)容對你能夠有幫助。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com