TCL语句(二) -- 事务

一、含义

  事务:一条或多条 sql 语句组成一个执行单位,一组 sql 语句要么都执行要么都不执行

二、特点(ACID 属性)

  A.原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么 都发生,要么都不发生。

  C.一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态 。

  I.隔离性(Isolation) 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个 事务内部的操作及使用的数据对并发的其他事务是隔离的,并发 执行的各个事务之间不能互相干扰。

  D.持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的,接下来的其他操作和数据库故障不应该对其有任何影 响

三、事务的使用步骤★

隐式(自动)事务:没有明显的开始和结束,本身就是一条事务可以自动提交,比如 insert、update、delete;

显式事务:具有明显的开始和结束

使用显式事务

① 开启事务

SET autocommit=0;

START TRANSACTION;

② 编写一组逻辑 sql 语句

注意:sql 语句支持的是 insert、update、delete

设置回滚点:

SAVEPOINT回滚点名;

③ 结束事务
提交事务:COMMIT;
回滚事务:ROLLBACK;

回滚到指定的地方:ROLLBACK TO 回滚点名;

四、并发事务

1、事务的并发问题是如何发生的?

  多个事务 同时操作 同一个数据可的相同数据

2、并发问题有哪些?

  脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“更新”的数据

  不可重复读:一个事务多次读取,结果不一样

  幻读:一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务“插入”的数据

3、如何解决并发问题

  通过设置隔离级别解决并发问题

4、隔离级别

                    脏读      不可重复读      幻读

  read uncommitted:读未提交      √        √         √ 
  read committed:读已提交       ×        √         √
  repeatable read:可重复度       ×        ×         √
  serializable:串行化          ×        ×         ×

原文地址:https://www.cnblogs.com/xifengbuqi/p/9218891.html

时间: 2024-10-27 11:11:37

TCL语句(二) -- 事务的相关文章

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

Oracle中DDL语句对事务的影响

 1.Oracle中DDL语句对事务的影响 在Oracle中,执行DDL语句(如Create Table.Create View等)时,会在执行之前自动发出一个Commit命令,并在随后发出一个Commit或者Rollback命令,也就是说,DDL会象如下伪码一样执行: Commit;DDL_Statement; If (Error) then Rollback; Else Commit;End if; 我们通过分析下面例子来看Oracle中,DDL语句对事务的影响: Insert into

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 本篇文章是系列文章中的第二篇,以防你还没有看过第一篇.上一篇的文章地址如下: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID

MySQL(二)--事务与视图

一.事务 1.提交 2.回滚 3.ACID特性 二.视图 1.创建视图 2.删除视图 3.更新视图 4.使用视图 三.子查询 1. 使用子查询 2. 标量子查询 3. 关联子查询 一.事务 在 RDBMS 中,事务是对表中数据进行更新的单位.简单来讲,事务就是需要在同一个处理单元中执行的一系列更新处理的集合. 事务开始语句START TRANSACTION; DML语句①; DML语句②; DML语句③; . . . 事务结束语句(COMMIT或者ROLLBACK); 1.提交 COMMIT 是

JDBC高级特性(二)事务、并发控制和行集

一.事务 事务是指一个工作单元,它包括了一组加入,删除,改动等数据操作命令,这组命令作为一个总体向系统提交运行,要么都运行成功,要么所有恢复 在JDBC中使用事务 1)con.setAutoCommit(false),取消自己主动提交 2)对数据库运行一个或多个操作(一个或多个SQL语句) 3)con.commit().提交事务(上面的第二部的多个操作就作为一个总体提交运行) 4)假设某个操作失败.通过con.rollback()回滚全部操作(撤销以上的操作,将数据恢复为运行前状态) 事务处理依

20151016学习内容:触发器;分页语句;事务

20151016: --触发器:一种特殊的存储过程,通过对数据库表操作的 --动作,来触发,增删改 alter trigger Fruit_Insert_After --修改用alter on fruit --对哪个表操作的时候执行触发器 instead of insert -- for --(update,delete) for的意思是动作之后触发after等同 as select *from inserted --inserted临时表,就是增加的数据 go select *from stu

storm(二) 事务机制

前言 为了保证tuple的强有序和exactly-once语义,storm提供了事务机制,为每个tuple提供一个id 设计方法1 为每个tuple设置一个事务id,在数据库保存事务id和当前处理的id做比较. 1.两个id不一样,由于事务的强有序特点,判断出该tuple没有出现过,所以更新id 2.id一样,重复出现,可以不用处理 问题: 这样做会导致新能很低,每个tuple都必须处理完后才能处理下一个tuple(否则会影响和下一个tuple的顺序),并且每个tuple还得至少访问一次数据库

Powershell--批量拆分SQL语句为事务并批处理

作为DBA,时不时会遇到将数据导入到数据库的情况,假设业务或研发提供一个包含上百万行INSERT语句的脚本文件,而且这些INSERT 语句没有使用GO来进行批处理拆分,那么直接使用SQLCMD来执行会发现该进程消耗大量物理内存并迟迟没有数据写入,即使脚本中每一行都添加了GO,你依然会发现这插入效率太差,让你无法忍受,怎么搞呢,下面小代码帮你折腾下: $old_file_path= 'C:\insert_scripts.sql' $new_file_path='C:\insert_scripts_