触发器

Spring定时任务(一):SpringTask使用

て烟熏妆下的殇ゞ 提交于 2019-11-28 20:58:35
   背景:在日常开发中,经常会用到任务调度这类程序。实现方法常用的有:A. 通过java.util.Timer、TimerTask实现。 B.通过Spring自带的SpringTask。 C. 通过Spring结合Quartz实现。本文我们将讲述SpringTask的使用入门方法。    一、配置     A. 引入SpringTask命名空间     B. 开启Spring注解扫描, 将Bean的创建交由Spring进行管理。用于创建Scheduler声明       <context:component-scan base-package="com.unben.scheduler" />     C. 开启SpringTask注解驱动。作用:识别Task相关注解,如“@Scheduled”       <task:annotation-driven/>     D. 创建TreadPoolTaskScheduler实例,并指定该线程池初始大小。       <task:scheduler id="taskScheduler" pool-size="5" />     E. SpringTask的触发器实现方案有两种, 一种是基于Cron表达式的CronTrigger触发器, 另一种是基于接受固定周期的PeriodicTrigger触发器。在接下来的步骤二

mysql-之触发器_已迁移

♀尐吖头ヾ 提交于 2019-11-28 20:53:11
mysql 触发器 当发生某个事件(增删更查)时可以执行定义的sql语句 ===============总结 无情的分隔线 总结======================== 一、触发器作用 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: 复制代码代码如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE

oracle入门学习的一些小总结

守給你的承諾、 提交于 2019-11-28 20:39:02
1. 书写代码时,先把要书写的格式写出来,然后往内部填充内容,能降低代码的报错率。 2. 通过 :=& 这种弹框手动录入数据时,如果输入的是字符串时需要加单引号 3. 不能够通过循环来多次弹框录入数据,Oracle不支持(因为实际应用中不存在这种录入数据的情况)。 4. 注意书写存储过程中,传递的参数不要与数据库表中的列名一样,否则sql语句的执行会与预期的不同,并且很难找出原因 5. 在存储id主键数据时,如果在下面的sql语句中两张表内都用到了同一个id,这时,这个id需要从调用的地方生成并且传递过去,不能在sql执行的时候插入生成。 6. 语句报错时,大都是语法格式问题,查看分号是否少写,是否多写。 7. 一些语法区别要注意:如oracle的分支if有三种,有区别的就是if 条件 then elsif 条件 then else end if; 8.函数和存储过程很相似,但是存储过程主要用来书写业务逻辑,只为一个业务服务,里面写的时增删改查; 函数一般书写工具,在select中可以使用。 PL/SQL语法: A. 匿名代码块: declare 声明:数据类型、变量、常量(constant)、异常——⾃定义异常、游标 begin 代码块:核⼼代码基本都是sql语句。 exception 异常处理 end; B. 赋值:在declare中 直接赋值 变量名:=值; 输入框赋值

WEB 13.MySQL

谁都会走 提交于 2019-11-28 18:45:39
MySQL 数据备份 权限管理 修改密码 如果忘记密码怎么办 创建用户 给用户授权允许远程连接 索引 优缺点: 索引分类: 添加索引: 查看索引: 删除索引: 视图 定义: 特点: 触发器: 事物的基本操作: 数据备份 先退出mysql环境 数据的导出 备份表: 格式:mysqldump -uroot -p 库名 表名>表名.sql 备份库: 格式: mysqldump -uroot -p 库名>备份文件名.sql 数据的导入 数据的导入: Mysql -uroot -p 库名 < 备份文件地址.sql 权限管理 用户:链接的账户 权限:语序用户操作的范围 组:权限的集合 修改密码 Mysql 有一个默认的mysql库 有一个user表,这个表中存放的就是咱们用户信息 切换到mysql库中,执行 update user set authentication_string=password(‘123456’) where User=’root’ and host=’localhost’; 重新启动服务 net stop mysql net start mysql 然后在去连接数据库 此时会发现不输入密码连接会失败,使用密码登录就ok了 如果忘记密码怎么办 修改配置文件my.cnf 在mysqld最后一行添加 skip-grant-tables 跳过权限验证 重启服务

04.Quartz 触发器

余生颓废 提交于 2019-11-28 18:18:48
Quartz 触发器分为两种SimpleTrigger 和 CronTrigger, SimplerTrigger 适用于以固定时间间隔执行重复N次或延时执行一次的定时任务, CronTrigger 适用于按照日历规则来执行定时任务, 如每月最后一天触发一次, 每周一触发一次等. 1. 核心API quartz 提供了一组API, 用于快捷地创建SimpleTrigger或CronTrigger: TriggerBuilder: 用于构建触发器, 可以设置公有属性:触发器名称, 描述信息, 开始调度时间, 结束时间等 DateBuilder: 时间工具类, 可便捷设置触发器开始调度时间和结束调度时间. SimpleScheduleBuilder: 用于构建simple触发器, 需要设置重复间隔, 重复次数 CronScheduleBuilder: 用于构建cron触发器, 需要设置cron 表达式 2. 触发器创建实例 2.1 创建SimpleTrigger SimpleTrigger 创建时, 需指定定时任务间隔和重复次数. Trigger trigger1 = TriggerBuilder . newTrigger ( ) . withIdentity ( "trigger1" , "simpTrigger" ) . withDescription ( "每隔3秒触发一次,

02.Quartz 环境搭建-基于jdbc-mysql

白昼怎懂夜的黑 提交于 2019-11-28 18:18:45
笔者前面介绍了quartz 基于内存的环境搭建, 接下来在前面的基础上, 将项目修改为基于jdbc存储的quartz环境. quartz 2.x 共有11张表, 需要事先导入数据库中. quartz 针对常见的数据库均提供了初始化脚本, 位于docs/dbTables目录中. 1. quartz 相关表 quartz 默认表前缀为QRTZ_, quartz 支持修改表前缀. 但是由于quartz默认表名比较长, 因此修改后可能会导致标识符过长的问题. 通常情况下, 我们并不用关注quartz表数据, 更不需要私自操作quartz 表数据. 笔者这里也只介绍几张核心表: QRTZ_TRIGGERS: 存储所有定时任务的信息 QRTZ_SIMPLE_TRIGGERS: 存储SimpleTrigger 触发器的信息 QRTZ_CRON_TRIGGERS: 存储CronTrigger 触发器的信息 QRTZ_JOB_DETAILS: 存储定时任务的相关信息 QRTZ_FIRED_TRIGGERS: 存储已触发的触发器信息 QRTZ_PAUSED_TRIGGER_GRPS: 存储暂停的触发器组信息 QRTZ_BLOB_TRIGGERS: 存储二进制触发器信息 2. 修改项目 2.1 添加数据库驱动依赖 <!-- 数据库驱动 --> < dependency > < groupId >

sql server 第一个触发器

夙愿已清 提交于 2019-11-28 17:45:41
create trigger UpdateQueueTableInfo on his_queue after update as begin declare @sysDate datetime; declare @queueDate datetime; declare @appointsid varchar(50); declare @flag int; declare @oldflag int; select @sysDate=GETDATE() from deleted select @queueDate=APPOINTSDATE,@appointsid=APPOINTSID,@flag=FLAG from deleted select @oldflag=FLAG from inserted; --print '更新前flag' --print '更新后flag' --提前转登记 if(@sysDate<@queueDate and (@flag=2 or @flag=3) and @oldflag<>@flag) update QUEUEDETAIL set ISPREREGISTER='1' where APPOINTSID=@appointsid; update HIS_QUEUE set ISPREREGISTER='1' where APPOINTSID=

使用MySQL触发器同步数据

痞子三分冷 提交于 2019-11-28 17:29:06
之前尝试做异地间的Memcache数据同步,使用Gearman作为消息队列配合消息处理进程进行数据写入,发现在内网中测试的性能和通过异地之间的专线性能差距非常明显,在异地的情况下即使增加大量的消息处理进程同步的数据流量依然难以增加。由此判断可能是由于异地之间专线的延迟还是要远远高于内网,读写Memcache这种要求低延迟的IO操作会严重受到网络延迟的影响(如果Memcache支持批量写入或许能够缓解这一问题)。因此想到的解决办法就是避免使用高延迟网络做读写Memcache的操作,即将数据先通同步到另一端,然后在进行写入就可以避免网络延迟带来的影响。 而对于将数据同步到另一端,可以通过一些数据库的复制机制进行,一般会比较容易想到Redis,将数据案时间分List写入,另一端使用脚本循环利用BLPOP方法读取数据进行同步。这也是个很好的办法,难点在于需要自行开发同步数据的进程,进程需要有较好的性能和稳定性,同时还需要便于维护和监控。 然而说到数据复制机制,我首先想到的就是MySQL,使用Blackhole Engine将数据通过binlog的方式同步到另一端,可靠性要高于Redis——复制中断可恢复,数据也有binlog作为记录也是不错的。对于进行同步的进程有两种办法,一种是通过进程读取复制过来的binlog,这个方法的难点依然在于需要自行开发同步进程,难点与使用Redis进行同步类似

ERP软件触发器判断单身数据为什么状态,如何执行

末鹿安然 提交于 2019-11-28 15:48:26
USE [DSB] GO /****** Object: Trigger [dbo].[DINGDAN2] Script Date: 08/26/2019 13:40:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[DINGDAN2] on [dbo].[DCSHCB] AFTER INSERT,update AS begin --创建单据表列变量 DECLARE @HCB007 numeric(17, 8)--单价 --百度查询,固定写死 SET NOCOUNT ON; --设置@HCB007变量为 插入时临时表中的值 set @HCB007=(select HCB007 from inserted where HCB020='F') --如果@HCB007为0 if @HCB007=0 --if条件成立则执行 BEGIN --抛出一个异常或错误 RAISERROR ('订单单价为0!',16,1) --SQL多步操作发生错误,调用此语句,数据回滚到最初始状态。 ROLLBACK TRANSACTION END END 来源: https://www.cnblogs.com/liyunchuan/p/11413988.html

MySQL触发器

*爱你&永不变心* 提交于 2019-11-28 12:48:48
MySQL触发器 2019-08-24 触发器是定义一种关联行为,当对某个表的行级进行一次增删改的行为时,通过触发器自定义一个关联操作。 触发器激活后即进入后台运行,直到关闭触发器为止。 触发器激活语法格式: --触发器 --先修改结束符,防止触发器操作的误结束 delimiter // create trigger 触发器名 触发条件 on 表名 for each row begin 触发器的操作; end // --再将结束符改回原样 delimiter ; 触发器名:即类似于编程语言中的变量名,由自己创建; 触发条件:有6个,分别是1)before insert 2)after insert 3)before delete 4)after delete 5)before update 6)after update; 触发器关闭的语法格式: drop trigger 触发器名; 触发器需要使用触发动作的内容时,可借助关键字NEW和OLD。 NEW:指新数据,在insert或者update时使用,代表新插入的数据或者更新的新数据; OLD:指老数据,在delete或者update时使用,代表被删除的或者被更新的数据; 实例: 假设有一个userinfo表用于记录人员信息,一个record表用于记录userinfo表的历史操作,实现每修改一条数据都有相应的记录;记录当时的时间