触发器

数据库整理(五)数据库编程 触发器 事务 过程

白昼怎懂夜的黑 提交于 2019-12-03 08:07:05
数据库整理(五)数据库编程 嵌入式SQL 交互式SQL和嵌入式SQL是SQL的两种使用方法。将SQL语言嵌入到宿主语言程序中, 将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合 ,这种使用SQL的方法称为嵌入式SQL。 SQL查询数据库的能力强,高级语言对复杂应用和复杂逻辑处理能力强 类似断言、触发器等操作需要对数据进行处理,原生SQL能力不强 数据库服务器只识别SQL语句,用SQL可以提高效率 如何实现嵌入式SQL? 宿主语言(简称 主语言 )的编译器不能识别SQL,如何将嵌有SQL语句的宿主语言编译成可执行代码? 宿主语言与DBMS之间如何传递数据和信息? 如何解决元组集合数据对宿主语言变量的赋值? 识别与处理SQL 数据库管理系统一般采用预编译方法处理,即由数据库管理系统的预处理程序对源程序进行扫描,识别出嵌入式SQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它们,然后由主语言的编译程序将纯的主语言程序编译成目标码 为了调用,将SQL语言转变为函数调用 用EXEC SQL前缀来标识SQL语句 ,以区分宿主语言与SQL语言。 EXEC SQL <SQL语句>; 嵌入式SQL语句与主语言的通信 SQL负责操纵数据库,高级语言语句负责控制逻辑流程 数据库工作单元与源程序工作单元之间的通信主要包括: (1) 向主语言传递SOL语句的执行状态信息

事务、视图、触发器、存储过程、函数、备份

你离开我真会死。 提交于 2019-12-03 07:47:05
目录 事务 基本原理: 使用方法 事务的特性 存储引擎 视图 触发器 存储过程 函数 数据库备份 事务 事务是什么 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言书写的用户程序的执行所引起。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 通俗来讲,事务指一组操作,要么都执行成功,要么都执行失败。 基本原理: Mysql允许将事务统一进行管理(存储引擎INNODB),将用户所做的操作,暂时保存起来,不直接放到数据表(更新),等到用于确认结果之后再进行操作。 使用方法 start transaction; sql 语句 commit(成功提交)/rollback(回滚,清空操作); 例子: --模拟银行转账 --先准备数据 create table user( id int auto_increment primary key, name varchar(32) not null default '', salary int not null default 0 )charset utf8; insert into user(name,salary) values ('cwz',1000),('张三',2000); -

关系型数据库同步

牧云@^-^@ 提交于 2019-12-03 07:07:51
关系型数据库同步 1)、全量同步 比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就是分页查询源端的表,然后通过数据库引擎批量(比如JDBC)插入到目标表,这个地方需要注意的是,分页查询时,一定要按照主键id来排序分页,避免重复插入。 2)、基于数据文件导出和导入的全量同步,这种同步方式一般只适用于同种数据库之间的同步,如果是不同的数据库,这种方式可能会存在问题。 3)、基于触发器的增量同步 增量同步一般是做实时的同步,早期很多数据同步都是基于关系型数据库的触发器trigger来做的。 使用触发器实时同步数据的步骤: A、 基于原表创触发器,触发器包含insert,modify,delete 三种类型的操作,数据库的触发器分Before和After两种情况,一种是在insert,modify,delete 三种类型的操作发生之前触发(比如记录日志操作,一般是Before),一种是在insert,modify,delete 三种类型的操作之后触发。 B、 创建增量表,增量表中的字段和原表中的字段完全一样,但是需要多一个操作类型字段(分表代表insert,modify,delete 三种类型的操作),并且需要一个唯一自增ID,代表数据原表中数据操作的顺序,这个自增id非常重要,不然数据同步就会错乱。 C、 原表中出现insert,modify,delete

触发器

一个人想着一个人 提交于 2019-12-03 05:30:25
MySQL触发器用法详解 一、MySQL触发器创建: 1、MySQL触发器的创建语法: 1 2 3 4 5 6 7 CREATE  [DEFINER = { 'user' | CURRENT_USER }]  TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW [trigger_order] trigger_body   2、MySQL创建语法中的关键词解释: 字段 含义 可能的值 DEFINER= 可选参数,指定创建者,默认为当前登录用户(CURRENT_USER); 该触发器将以此参数指定的用户执行,所以需要考虑权限问题; DEFINER='root@%' DEFINER=CURRENT_USER trigger_name 触发器名称,最好由表名+触发事件关键词+触发时间关键词组成; trigger_time 触发时间,在某个事件之前还是之后; BEFORE、AFTER trigger_event 触发事件,如插入时触发、删除时触发;   INSERT:插入操作触发器,INSERT、LOAD DATA、REPLACE时触发;   UPDATE:更新操作触发器,UPDATE操作时触发;   DELETE:删除操作触发器,DELETE、REPLACE操作时触发; INSERT

1101 笔记

*爱你&永不变心* 提交于 2019-12-03 05:12:45
目录 1. 事务 为什么要使用 使用 特性 原子性 一致性 隔离性 持久性 2.存储引擎 InnoDB MYIsam 区别 3.视图 定义 增加视图 查看视图 删除视图 4.触发器 语法 增加触发器 查看触发器 删除触发器 5.存储过程 定义 优点 缺点 总结 语法 创建 使用 删除 6.函数 7.数据库备份 语法 1. 事务 mysql主要用于处理操作量大,复杂度高的数据,比如在人员管理系统 你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在mysql中只有使用了InnoDB数据库引擎的数据库或表才支持事务 事务处理可以维护数据库的完整性,保证成批的sql语句要么全部执行,要么全部不执行 事务用来管理insert,update,delete语句 为什么要使用 很多时候一个数据操作,不是一个sql语句就完成的,可能有很多个sql语句,如果部分sql执行成功而部分sql执行失败将导致数据错乱 eg: 转账 == 转入转出均成功,才能认为操作成功 使用 开启事务: start transaction sql语句: 提交: commit 回滚: rollback // 影响所有,回滚到初始 start transaction; --开启事物,在这条语句之后的sql将处在同一事务,并不会立即修改数据库

事务视图存储过程触发器数据备份

╄→尐↘猪︶ㄣ 提交于 2019-12-03 04:57:27
目录 事务 事务的特性 原子性(Atomicity): 一致性(Consistency): 隔离性(Isolation): 持久性(Durability): 存储引擎 InnoDB :保时捷引擎 MyIsam:奔奔引擎 视图 使用 增加视图 删除视图 触发器 存储过程 创建 函数 数据库的备份 语法 示列 事务 通俗的说,事物指一组操作,要么都执行成功,要么都执行失败 使用事务: start transactino sql语句 commit/rowllback # 演示: mysql> select * from t1; +----+------+--------+ | id | name | salary | +----+------+--------+ | 1 | aa | 1000 | | 2 | bb | 2000 | | 3 | dd | 3000 | +----+------+--------+ mysql> start transaction; mysql> update t1 set salary=100 where name='aa'; mysql> select * from t1; +----+------+--------+ | id | name | salary | +----+------+--------+ | 1 | aa | 100 | | 2

客户端设置开机自动连接

时光毁灭记忆、已成空白 提交于 2019-12-03 04:45:33
1)Linux客户端设置开机自动启动 [root@client ~]# cat >> /etc/rc.d/rc.local << EOF cd /etc/openvpn/ && /usr/sbin/openvpn --daemon --config client.ovpn EOF [root@client ~]# chmod +x /etc/rc.d/rc.local 2)Windows客户端设置开机自动启动 有两种方式:一种是修改注册表、一种是设置触发器 第一种:修改注册表 复制这个路径:C:\Program Files\OpenVPN\bin\openvpn-gui.exe 在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN-GUI路径中、将silent_connection的值修改为1 随后在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run路径中、新建项即可 项目的值为:"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect client.ovpn 最后在service.msc中、将OpenVPN Serviced的启动类型由手动更改为自动即可、这样就完成了开机自动连接 第二种:设置触发器

五、事务、视图、触发器、存储过程、函数和备份

大兔子大兔子 提交于 2019-12-03 04:42:38
目录 一、事务consaction (一)什么是事务 (二)事务的ACID特性 (1)原子性Atomicity (2)一致性consistency (3)隔离性Isolation (4)持久性Durability (二)存储引擎engine (1)InnoDB (2)MyIsam 二、视图view (一)增加视图 (二)删除视图 三、触发器trigger (一)创建触发器 (二)查看和删除触发器 四、存储过程procedure (一)创建存储过程 (二)删除存储过程 五、函数 六、数据库备份 一、事务consaction (一)什么是事务 事务是指一组操作,要么都执行成功,要么都执行失败 start consaction:开启事务 commit:提交确认 rollback:回滚,撤销 # 语法 start transaction; sql语句 commit/roll back; # 1. 事务下的代码在commit之后才会生效 # 2. 事务下的代码rollback之后会失效 (二)事务的ACID特性 (1)原子性Atomicity 指不能再分的事务,要么全部成功,要么全部失败 (2)一致性consistency 事务发生前和发生后,数据的总额依然匹配 (3)隔离性Isolation 某个事务的操作对其他事物不可见 (4)持久性Durability 当事务完成后,其影响应该保留下来

MySQL--触发器

泄露秘密 提交于 2019-12-03 04:19:45
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11776726.html MySQL触发器 创建一个触发器-->当stu_user表任意一行有插入操作之前,都将执行begin和end之间的操作,before可以换成after, insert可以换成udpate, delete CREATE TRIGGER dog BEFORE INSERT ON stu_user FOR EACH ROW BEGIN INSERT INTO class_user values( 1, 'hello' ); END; 删除触发器 DROP TRIGGER IF EXISTS dog 查看触发器 SHOW TRIGGERS; 来源: https://www.cnblogs.com/fanerwei222/p/11776726.html

触发器

試著忘記壹切 提交于 2019-12-03 01:45:23
create or replace trigger SysnRoute before insert or update on audit_group for each ROW--行级别 declare -- local variables here nCount number := 0;--声明参数 begin select count(*) into nCount from sys_synmonitor t where t.sys_synmonitor_id = :new.audit_group_id;--给参数赋值 --判断条件 if (:NEW.VAL_AUDITSTATUS = 1 AND :NEW.VAL_PUBLISH = 1 and :NEW.CODE_TYPE = 2 and nCount = 0) then INSERT INTO sys_synmonitor VALUES (:NEW.AUDIT_GROUP_ID, :NEW.TXT_DESIG, '', :NEW.DATE_LASTMODIFY, '', --备注 CASE :NEW.CODE_ACTION WHEN 0 THEN 'I' WHEN 1 THEN 'M' WHEN 2 THEN 'D' END, :NEW.TXT_IDENTIFY, :NEW.TXT_IDENTIFY_DESIG); end