数据库触发器怎么写
数据库触发器是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,在当我们在做用户模块的表设计的时候,建了联用户信息表(t_user)和账号表(t_account),其中账号表(t_account)用来进行账号的注册 ,密码的修改等操作,而用户表(t_user)则用来存储用户的基本信息(比如:姓名,年龄等),通常我们会在 t_user中创建外键(userid)进行关联t_account以保证每个账号下对应一个用户信息,当账号(t_account)注册成功,这时则可以使用数据库触发器来实现在用户(t_user)中实时地、准确地添加相应信息,所以是一个可以提高我们处理数据的工具,因此小编就来给大家介绍一个简单的数据库触发器的写法。
语法:
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 触发器
`jony_keer`.`ins_account` 触发器名称,jony_keer是我的数据库名字,ins_account 才是实际的触发器名称
AFTER 表示执行条件,有 BEFORE(之前 )AFTER(之后)
INSERT ON 表示在执行了插入操作 有INSERT/UPDATE/DELETE 三种
`jony_keer`.`t_account` 接下来的这个是表示触发器所在的表(可以理解为触发器在t_account 表插入一组出具后执行)
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 表中插入的数据 ,我们把 t_account 表中插入的 account_id cellphone account_psd 赋值给t_user表中的 userid cellphone account_psd ,这样一个简单的触发器就做好了。
以下是具体的表结构:
t_account
t_user
可以看到我们两个表中目前还没有数据,接下来我们要给表t_account中添加一组数据,看看t_user表是否会给我们带来惊喜,这里我已经做好了程序接口,只需要调用一下就好了。
/**
* 注册
* @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, "该手机号已经注册,请前往登录。");
}
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);
上面三个段代码是我们已经做好的注册接口,接下来我们就去启动服务器开始验证吧,打开Postman 调用服务器接口。
我们看下t_account中的数据:
我们看下t_user中的数据:
这时我们可以看到,t_account表中的 account_id cellphone account_psd 已经插入进去,并且 t_user表中同时也插入userid cellphone和account_psd,而且是一一对应的。
好了,一个简单的触发器就是这么完成的,希望以上的内容对你能够有帮助。
-
2020苏宁双十一有什么活动
双十一活动已经开始了,双十一活动不仅仅在淘宝、天猫,现在已经成为全民电商的网络购物节,苏宁在双十一活动力度也是很大的,那么2020苏宁双十一有什么活动?接下来就来为大家介绍有关...
生活查看全文>> -
gofun共享汽车后备箱怎么开?
开gofun共享汽车后备箱方法如下:1、gofun共享汽车后备箱正确打开方法是在主驾座位左下方,有一个提手,用力往上提,即可打开车后备箱门的锁扣,然后我们到后面轻轻向上拉开后备...
问答查看全文>> -
七夕经典短句子文案 七夕简短大气文案
1、七夕经典短句子文案:2、七夕谁陪我,好像只有我的影子了。3、你哄我的时候我就觉得你特别爱我。4、祝愿,插上翅膀飞到你身旁;福音,随着微风送到你耳边;语言,从嘴里说出,飘入你...
句子查看全文>> -
伊兰特电瓶在哪个位置?
伊兰特电瓶在发动机盖里,汽车电瓶也叫蓄电池,是电池的一种,工作原理就是把化学能转化为电能。电瓶分为普通蓄电池、干荷蓄电池、免维护蓄电池,通常所说的电瓶是铅酸蓄电池。以伊兰特20...
问答查看全文>> -
丰田红衫越野怎么样?
丰田红衫越野还算可以,值得买:1、丰田红杉,不输给丰田陆巡,在中国毫无名气,在北美却很火爆;2、丰田红杉的名气之所以没有陆巡大,主要是因为它主攻北美市场,陆巡好歹也经历过国产。...
问答查看全文>>
推荐
- 1m挡和s档有什么区别?486
- 2过了停止线红灯亮了可以直行吗413
- 3ccnp证书过期了302
- 4凯迪拉克CT4 2021款 28T 精英型怎么样,好不好164
- 5qq空间伤感长篇说说121
- 6怎么发朋友圈动态视频254
- 7网课心得体会作文300字387
- 8朋友圈十一月你好文案说说375