触发器

MySQL学习之触发器

萝らか妹 提交于 2019-12-17 00:39:47
目录 触发器 创建 删除 触发器 如果你想在对表进行增(insert)、删(delete)、改(update)操作的前(before)后(after) 触发某种特定的行为的时候,就可以使用触发器 (没有查select) 创建 # 创建: # 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN . . . END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN . . . END # 删除前 CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN . . . END # 删除后 CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN . . . END # 更新前 CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN . . . END # 更新后 CREATE TRIGGER

数据库触发器

被刻印的时光 ゝ 提交于 2019-12-15 04:28:51
管理数据库对象 一、 索引 作用:加快查询速度 创建 1) 创建表同时创建索引 create table student1 (sno char(4), sname char(20), index ix_sno(sno asc)); 2) 在已经存在的表上创建索引 create index ix_sno on student(sno desc); 查看 show index from student; 删除 drop index ix_sno on student1; 二、 视图 定义:从一个或多个基本表或视图中导出的虚表。 作用 简化对数据的操作。 自定义数据。 数据集中显示。 导入和导出数据。 合并分割数据。 安全机制。 创建(修改) Create(alter) view 名字 As Select语句 举例 创建视图v1,其内容包括学生学号、姓名、课程号、课程名、成绩; create view v1 as select student.sno,sname,course.cno,cname,grade from student join sc on student.sno = sc.sno join course on sc.cno = course.cno; 查看 使用 select * from v1 where sname = ‘刘晨’; 对视图的增删改是有限制的 出错实例:

flink基本原理

笑着哭i 提交于 2019-12-14 18:46:49
一、简介 开源流式处理系统在不断地发展,从一开始只关注低延迟指标到现在兼顾延迟、吞吐与结果准确性,在发展过程中解决了很多问题,编程API的易用性也在不断地提高。本文介绍一下 Flink 中的核心概念,这些概念是学习与使用 Flink 十分重要的基础知识,在后续开发 Flink 程序过程中将会帮助开发人员更好地理解 Flink 内部的行为和机制。 这里引用一张图来对常用的实时计算框架做个对比: Flink 是有状态的和容错的,可以在维护一次应用程序状态的同时无缝地从故障中恢复。它支持大规模计算能力,能够在数千个节点上并发运行。它具有很好的吞吐量和延迟特性。同时,Flink 提供了多种灵活的窗口函数。Flink 在流式计算里属于真正意义上的单条处理,每一条数据都触发计算,而不是像 Spark 一样的 Mini Batch 作为流式处理的妥协。Flink的容错机制较为轻量,对吞吐量影响较小,而且拥有图和调度上的一些优化,使得 Flink 可以达到很高的吞吐量。而 Strom 的容错机制需要对每条数据进行ack,因此其吞吐量瓶颈也是备受诟病。 二、工作原理 Flink基本工作原理如下图: JobClient:负责接收程序,解析和优化程序的执行计划,然后提交执行计划到JobManager。这里执行的程序优化是将相邻的Operator融合,形成Operator Chain

数据库实验六

怎甘沉沦 提交于 2019-12-14 05:34:58
实验六 数据库编程 一、实验目的 1.掌握触发器的概念,了解触发器的类型 2.掌握存储过程的创建与执行方法 二、实验内容 创建触发器trigger_delete,实现以下功能:当订单表的数据被删除时,显示提示信息“订单表记录被修改了”。 CREATE TRIGGER TRIGGER_DELETE ON Sell_Order AFTER DELETE AS PRINT '订单表记录被修改了' 对Sell_Order表创建名为reminder的触发器,当用户向Sell_Order表中插入或修改记录时,自动显示Sell_Order表中的记录。 CREATE TRIGGER TRIGGER_REMINDER ON Sell_Order AFTER UPDATE AS SELECT * FROM Sell_Order 对Employee表中创建名为emp_updtri的触发器,实现如下功能:当修改姓名时,自动检查订单表,确定是否有该员工的订单,如果存在该员工,则撤销操作。 CREATE TRIGGER EMP_UPDTRI ON Employee FOR UPDATE AS IF UPDATE ( EmployeeName ) DECLARE @ID INT BEGIN SELECT @ID = EmployeeID FROM deleted IF ( SELECT COUNT ( @ID

Mysql触发器

南楼画角 提交于 2019-12-13 12:57:51
Mysql中的触发器 什么是触发器 简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行; 特点及作用 特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行; 作用:保证数据的完整性,起到约束的作用; 案例 创建 user 表和 user_history表 创建user表; DROP TABLE IF EXISTS ` user ` ; CREATE TABLE ` user ` ( ` id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT , ` account ` varchar ( 255 ) DEFAULT NULL , ` name ` varchar ( 255 ) DEFAULT NULL , ` address ` varchar ( 255 ) DEFAULT NULL , PRIMARY KEY ( ` id ` ) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 ; 创建对user表操作历史表; DROP TABLE IF EXISTS ` user_history ` ; CREATE TABLE ` user_history ` ( ` id ` bigint ( 20 ) NOT NULL

Zbbix4.0(二)基础主机监控,

扶醉桌前 提交于 2019-12-11 20:59:48
Zabbix主机添加顺序: 添加主机组 ---->添加主机----->根据监控项目可添加图形或者触发器 1,添加主机组 2,添加主机 ##注意添加进刚才创建的组,和主机的IP 地址 根据接口支持多种添加方式: agent:zabbix提供一个agent客户端,可装在Linux、Windows等 snmp:使用snmp协议去监控服务器、交换机、路由器等 jmx:方便我们去监控java进程 ipmi:监控硬件信息 3,zabbinx 添加简单监控项目(zabbix 监控形式是根据key vlaue的形式) 这些简单监控项目时需注意一下选项:(ping 检测 需要预装fping yum -y install fping) name: 支持key 变量引用 $1 $2 等 type:simple check,被监控的服务器无需安装客户端,如ping,端口检测之类的 key:选择监控类型 有多种可选,例如icmpping ,icmplose, tcp port等 注意查看解释说明以及口号里参数的填写 type of information 返回值的类型无符号整型,值是正数,无负数。例如监控端口是否存活,存活返回1,不存活返回0,浮点型,值可以为负数、小数。例如监控cpu的idle值character,字符串,最大255个字节,Text,字符串,无限制 Units: 返回值的单位 例如:S

Oracle触发器用法及介绍

喜欢而已 提交于 2019-12-11 18:58:42
1、触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。 具体举例: 1、 在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。 2、 在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。 2、触发器语法 触发器语法: create [or replace] tigger 触发器名 触发时间 触发事件 on 表名 [for each row] begin pl/sql语句 end 其中: 触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。 触发时间:指明触发器何时执行,该值可取: before:表示在数据库动作之前触发器执行; after:表示在数据库动作之后触发器执行。 触发事件:指明哪些数据库动作会触发此触发器: insert

MySQL 触发器

限于喜欢 提交于 2019-12-11 07:56:10
一、触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: [sql] view plain copy create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin

在论坛中出现的比较难的sql问题:22(触发器专题3)

时间秒杀一切 提交于 2019-12-11 02:54:29
原文: 在论坛中出现的比较难的sql问题:22(触发器专题3) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 本篇 是触发器专题,有很多触发器的问题。 1、sql唯一性约束如何建立? http://bbs.csdn.net/topics/390697861 比如一张表Table1, 三个字段 ID A B ID为主键, 当B字段为某一特定值value时,A字段值是要唯一约束的, 若B字段为其他值,A不加唯一约束的。。 那达不到我要的约束条件了, 我想要的字段是是这样的(k是B的特定值) ID A B 1 a b 2 a b 3 b k 4 c k 如果在此基础上再加 A B b k 或者c k 则不能被允许。 我想在数据库中直接约束,看有没有办法,如果没有,则就要代码约束判断了。 我的方法: --drop table tb--go create table tb(ID int, A varchar(10), B varchar(10)) insert into tbselect 1 ,'a', 'b' union allselect 2 ,'a', 'b' union allselect 3 ,'b', 'k' union

在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)

放肆的年华 提交于 2019-12-11 02:34:05
原文: 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 在触发器中,当明细表插入数据时调用主表对应的数据 http://bbs.csdn.net/topics/390631301 大家好,由于金蝶ERP没法根据报价单里面的备品率自动算出备品数。所以需要建一个触发起。 触发器我是建在明细表上的,当明细表插入数据时调用主表对应的数据,关键是这时主表的数据好像也没提交到数据库,请问有什么方法可以调用到,谢谢。 我的回复: 通过了下面的实验,验证了,如果主表的事务还没有提交,但又想在触发器中用主表对应的数据,来计算备用品,是完全可以的。 因为触发器是和触发操作,在同一个事务中。 只要你的插入主表,插入明细表,在同一个事务中,那么就会和触发器也在同一个事务中,那么虽然主表操作没提交,也能在触发器中查询到这条还没有提交的主表记录。 --主表create table t1(id int primary key,v varchar(20)) --明细表create table t2(idd int primary key,id int references t1