最近业务需要在写入数据和更新数据的时候,去计算某些字段的值,一开始想的是程序拿到一步步计算,一条记录进行存储得时候,还可以,但是涉及到用户量多和批量导入之后,效率就太慢了,所以决定使用触发器去进行操作。
首先还是了解一下什么是触发器!
简单点说,触发器就是往一个表插入、修改、删除数据的时候,执行提前定义好的sql语句,比如两个字段的值进行相加。
触发器的坏处
1.触发器尽量少的使用,因为不管如何,它还是很消耗资源,如果使用的话要谨慎的使用,确定它是非常高效的:触发器是针对每一行的;对增删改非常频繁的表上切记不要使用触发器,因为它会非常消耗资源。
2.不利于维护,如果有不清楚逻辑的人接手项目,会造成困惑,我个人认为,如果一个人没有用过触发器,并且代码中没有写注释,没有人告知的话,是不明白到底在哪步进行相加的,和mysql的存储过程相似,但是存储过程至少是使用call调用的,所以还是可以找到的。
接下来就是使用Java去创建触发器。。。
项目是boot框架,但是我一开始将在navicat中写的触发器语句,粘贴到Java中去使用的时候,发现可以创建触发器成功,但是创建之后,就无法往改变写入修改数据了,提示是某个字段不存在,但是明明是有的,将触发器去除,插入数据恢复正常。
最终我使用了最原始的方式,使用jdbc去创建触发器,

 Connection connection = null;Statement stmt = null;try{// 注册 JDBC 驱动Class.forName(driverClassName);// 打开链接System.out.println("连接数据库...");connection = DriverManager.getConnection(url,USER,PASS);PreparedStatement prepareStatement = connection.prepareStatement(trigger);prepareStatement.executeUpdate();connection.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}

代码中一些url是从配置文件取得,不再叙述,tiggeer就是触发器得语句。

        String  trigger = "create  TRIGGER tigger"+time+" before insert on "+tableName+" for each row  begin  "+修改语句+"end" ;String  updateTrigger = "create  TRIGGER tigger"+updateTime+" before update on "+tableName+" for each row  begin  "+修改语句+"end" ;

上面得两个就是插入和修改时候得语句,大家可以根据自己得情况取进行更改
修改语句得话,在这里要注意格式为 举例:::set new.1jiage=new.2jiage+new.3jiage
time字段的话,因为触发器名字不能重复,我取的是时间戳。

如何查看触发器
1.在navicat中我们可以通过show TRIGGERS; 命令进行查看触发器

2.可以通过设计表,在触发器一栏中查看!

由于项目时间比较紧迫,最终使用的jdbc创建的触发器,如果大家有成功创建成功的boot的,可以分享一下。

Java创建mysql触发器相关推荐

  1. java创建mysql驱动,JDBC之Java连接mysql实现增删改查

    使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...

  2. java创建mysql sche_爱可生详解MySQL|入门必看DBLE中间件使用指南第一章:初识DBLE...

    目录: 一.DBLE项目资料 二.环境准备 安装JDK环境 三.安装DBLE 四.配置DBLE 应用场景一:数据拆分 应用场景二:读写分离 五.总结 DBLE 项目资料 DBLE 是企业级开源分布式中 ...

  3. Java创建MySQL句柄_MySQL创建用户(CREATE USER)

    在对 MySQL 的日常管理和实际操作中,为了避免用户恶意冒名使用 root 账号控制数据库,通常需要创建一系列具备适当权限的账号,应该尽可能地不用或少用 root 账号登录系统,以此来确保数据的安全 ...

  4. java创建数据库mysql数据库_用Java创建MySQL数据库

    为了使事情变得更简单,您可以使用NetBeans 6.5,它使设置SQL数据库变得更加容易.我现在正在使用它们,它是GUI布局和数据库连接的救命稻草.下面是一些关于如何从NetBeans连接到MySQ ...

  5. mysql创建删除触发器的时候_mysql触发器简介及如何创建和删除触发器

    什么是mysql触发器 需要MySQL 5 对触发器的支持是在MySQL 5中增加的.因此,本章内容适用于MySQL 5或之后的版本. MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要 ...

  6. mysql之触发器详解_学习笔记之MySQL触发器详解

    触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句 创建触发器 创建只有一个执行语句的触发器 CREATE TRIGGER 触发器名 BEFORE|AFTE ...

  7. mysql 触发器采坑记录(mysql 触发器采坑记录 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行。 当创建触发器(视图、存储过程、函数)时,如果没有)

    mysql 触发器采坑记录(语序有点凌乱,回头再整理) 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行. 当创建触发器(视图.存储过程.函数)时,如果没有指定创建 ...

  8. mysql利用触发器删除数据库_[数据库]mysql 触发器的创建 修改 删除

    [数据库]mysql 触发器的创建 修改 删除 0 2015-12-16 23:00:04 //做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 '日记本的回忆' ...

  9. Java中怎样创建数据库_在java中怎样创建MySQL数据库列表给个例子 爱问知识人

    java中怎样创建MySQL数据库列表 需要使用jdbc访问数据库. 具体步骤如下: 1:加载驱动 ,返回连接 private static final String DRIVER_CLASS = & ...

  10. mysql触发器delimiter_MySQL的触发器创建之注意事项(有关delimiter)

    今天晚上在自己的数据库上做了一个触发器.由于自己之前是使用SQL Server2005学习SQL语句的,所以在这个简单的触发器设计出现了一些自己意想不到的BUG.现在我来简单的说一下: 这里使用到 d ...

最新文章

  1. intellij idea cpu占用率太大太满 运行速度太慢解决方案
  2. 【408预推免复习】计算机组成原理之指令系统
  3. 后端学习 - SpringMVC
  4. tomcat ajp协议安全限制绕过漏洞_Apache Tomcat文件包含漏洞(CVE20201938)复现
  5. Fast RCNN总结
  6. 快速入门Web前端开发的正确姿势
  7. Maven - Maven3实战学习笔记(1)Maven使用入门
  8. 计算机网络谢希仁第七版课后习题答案
  9. 机械原理matlab辅助分析 答案,机械原理Matlab辅助分析答案
  10. 初步分析AxProtector V6.40.226.200Dotnet加壳与脱壳
  11. 词法分析之LED文件生成程序【调试中......】
  12. 天翼网关 ddns设置_为什么说网关在任何工业物联网解决方案中都很重要?
  13. python 金融知识图谱_从零搭建金融证券知识图谱-Part1
  14. 霍夫变换提取圆心坐标,并拟合直线
  15. php 手机号码所属城市,基于PHP的手机号码归属地查询
  16. js月份的计算公式_JS获取指定月份的天数几种方法
  17. excel手机版_手机版excel怎么用
  18. 当前没有源代码管理提供程序进行注册
  19. linux网络引流工具,gor 引流快速入门
  20. 判断和循环(实战收尾篇2—猜数字游戏)

热门文章

  1. 校园热水供应系统设计思路
  2. 设计模式:UML类图、策略模式、单例模式、工厂模式、观察者模式
  3. MacBook Pro 2017 13寸版 触摸板windows驱动开发(开发HID鼠标键盘驱动之一)
  4. 分析微信聊天记录(1)——获取微信聊天记录
  5. php session销毁方法,PHP session变量的销毁
  6. 论文阅读(12) 与其他后生动物相比,水母被动能量的重新获取有助于推进优势(2013)
  7. 渗透测试专业术语——攻击篇
  8. 华为云 git 托管代码 教程
  9. C# 正则表达式大全
  10. 【推荐】前沿智能视频分析深度学习算法框架-NVIDIA DEEPSTREAM5.0 【原理介绍】