当前位置:家常菜>百科>科技>正文

数据库触发器怎么写

人气:108 ℃/2024-11-04 01:15:03

数据库触发器是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,而且是一一对应的。

好了,一个简单的触发器就是这么完成的,希望以上的内容对你能够有帮助。

  • 鼓励努力的话

    1、没有汗水,就没有成功的泪水。2、希望是附丽于存在的,有存在,便有希望,有希望,便是光明。3、这样那样的弱点,不是一无是处的宣言,恰恰相反,正预示着自己与众不同的一点,仅仅在...

    句子查看全文>>
  • 鸣笛致谢鸣几下?

    以双跳灯表示感谢,如双跳两次,表示“谢谢”。将喇叭轻按三响:“嘀、嘀、嘀”意即“谢谢您”或“你先请”。具体如下:1、当两车面对行驶相遇时,一声短促的“嘀”是一种招呼语言。一般用...

    问答查看全文>>
  • 2022年的幼儿园实习个人的自我鉴定

    幼儿园实习个人的自我鉴定怎么写呢?一起来看看小编今天的分享吧。幼儿园实习个人的自我鉴定可以从三个方面进行描写,首先可以描写在试用期遇到了哪些问题,第二个就是要描写在试用期学到了...

    教育查看全文>>
  • p0BA3故障码解释和消除方法,P0BA3故障码怎么解决?

    P0BA3故障码,适用于所有汽车制造商,意思是混合动力电池电压监控U电路间歇/不稳定(Hybrid Battery Voltage Sense U Circuit Interm...

    问答查看全文>>
  • 东风菱智v3油耗多少?

    东风菱智v3这款车的油耗在8个的样子,不算高:1、菱智V3是国内首款1.5L小排量全能商务车,拥有“黄金小排量、体面大空间”的车型特点,是东风风行为处于事业起步阶段的个体业主、...

    问答查看全文>>
本网站部分内容、图文来自于网络,如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2007-2025 家常菜 All Rights Reserved. 手机版