(十五)PL/SQL事务

数据库事务是一个工作的原子单元,其可以由一个或多个相关的SQL语句组成。所谓的原子性就是数据库的修改所带来的构成事务的SQL语句可以集体被提交,即永久到数据库或从数据库中(撤消)回滚。
一个成功执行的SQL语句和提交的事务不一样。即使一个SQL语句执行成功,除非包含该语句的事务被提交,但也可以回滚和声明(S)的所有更改可以撤消。

一、开始事务
事务都有开始和结束。事务开始时有下列事件之一:
   连接到数据库后执行的第一个SQL语句。
   在事务完成之后发出每一个新的SQL语句完成。

二、提交事务
事务是通过发出SQL命令COMMIT永久生效。COMMIT命令的一般语法是:
  COMMIT;

示例,
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, ‘Ramesh‘, 32, ‘Ahmedabad‘, 2000.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (2, ‘Khilan‘, 25, ‘Delhi‘, 1500.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (3, ‘kaushik‘, 23, ‘Kota‘, 2000.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (4, ‘Chaitali‘, 25, ‘Mumbai‘, 6500.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (5, ‘Hardik‘, 27, ‘Bhopal‘, 8500.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (6, ‘Komal‘, 22, ‘MP‘, 4500.00 );
  COMMIT;

三、回滚事务
对数据库所做的不提交更改可以使用ROLLBACK命令撤消。
ROLLBACK命令的一般语法是:
  ROLLBACK [TO SAVEPOINT < saveyiibai_name>];
当一个事务因一些前所未有的情况中止,如系统故障,则整个事务由于提交自动回滚。如果不使用保存点,然后简单地使用下面的语句来回滚所有的变化:
ROLLBACK;

四、保存点
保存点是某种标志,帮助分裂一个长事务分成更小的单位设置了一些检查点。由一个长事务中设置保存点,可以根据需要回滚到一个检查点。这是通过发出SAVEPOINT命令来完成。  
保存点命令的一般语法是:
  SAVEPOINT < saveyiibai_name >;

示例:
I  NSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (7, ‘Rajnish‘, 27, ‘HP‘, 9500.00 );
  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)VALUES (8, ‘Riddhi‘, 21, ‘WB‘, 4500.00 );
  SAVEPOINT sav1;

  UPDATE CUSTOMERS SET SALARY = SALARY + 1000;
  ROLLBACK TO sav1;

  UPDATE CUSTOMERS SET SALARY = SALARY + 1000 WHERE ID = 7;
  UPDATE CUSTOMERS SET SALARY = SALARY + 1000 WHERE ID = 8;
  COMMIT;
在这里,ROLLBACK TO sav1; 声明回滚变化到一点,在那里标志着保存点sav1,之后将开始新的变化。

五、结束事务
事务结束时的下列事件之一发生:
  COMMIT或发出ROLLBACK语句。
  DDL语句,如CREATE TABLE语句,则发出;因为在这种情况下,COMMIT被自动执行。
  一个DCL语句,比如一个GRANT语句发出; 因为在这种情况下,COMMIT被自动执行。
  用户从数据库断开。
  从SQL* PLUS用户退出通过发出EXIT指令,COMMIT自动执行。
  SQL* Plus异常终止,自动执行ROLLBACK。
  一个DML语句失败; 在这种情况下自动执行撤消DML语句ROLLBACK。

六、自动事务控制
要执行一个自动COMMIT在每一个INSERT,UPDATE或DELETE命令执行时,可以设置AUTOCOMMIT环境变量:
  SET AUTOCOMMIT ON;
可以关闭使用以下命令自动提交模式:
  SET AUTOCOMMIT OFF;

时间: 2024-08-07 08:40:36

(十五)PL/SQL事务的相关文章

(十)PL/SQL记录

PL/SQL记录就是可以容纳不同类型的数据项的数据结构.记录由不同字段,类似于数据库表的行.例如,要保留跟踪图书馆中的书籍.可能要跟踪有关每本书下面的属性类似:标题,作者,主题,图书ID.包含一个字段为每个这些项目记录允许进行处理书籍作为一个逻辑单元信息. PL/SQL可以处理记录的以下几种类型:   基于表的记录   基于游标的记录   用户自定义记录      附:  Select * from customers;+----+----------+-----+-----------+---

Oracle学习笔记十 使用PL/SQL

PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构,可用于创建存储过程.触发器和程序包,给SQL语句的执行添加程序逻辑,与 Oracle 服务器和 Oracle 工具紧密集成,具备可移植性.灵活性和安全性. PL/SQL 的优点 支持 SQL,在 PL/SQL 中可以使用: 1.数据操纵命令 2.事务控制命令 3.游标控制 4.

2015.7.30 第十五课 sql(新建数据库、创建表、注释、查询语句、新增、更新、删除、联合查询)

1.认识数据库并新建: 1)打开数据库,连接到服务器. 2)服务里类型不用管. 3)服务器名称:打个点“.”表示服务器在本地计算机,如果是托管在别人的服务器上,就输入服务器IP地址. 4)身份验证:如果是windows身份验证,就需要有管理员权限.一般托管在别人的服务器上,(包括正常情况下),都是用SQL身份验证,需要输入sa和密码(密码就是安装时让输入的密码). 2.  建立数据库: 在建立数据库名称时(各种名称时),都遵守一个命名规则: 1)用英文命名 2)每个单词的首字母大写(驼峰原则:首

Oracle笔记 十、PL/SQL存储过程

--create or replace 创建或替换,如果存在就替换,不存在就创建 create or replace procedure p is cursor c is select * from dept2 for update; begin for row_record in c loop if (row_record.deptno = 30) then update dept2 set dname = substr(dname, 0, length(dname) - 3) where c

oracle执行多个pl/sql块

DECLARE    V_SQL_DROP_TABLE   VARCHAR2(50) := 'DROP TABLE MY_TEST2';    V_SQL_CREATE_TABLE VARCHAR2(100) := 'CREATE TABLE MY_TEST2(NOT_NULL VARCHAR2(20) NOT NULL, ONLY_INT INTEGER)';  BEGIN    EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 创建测试表  EXCEPTION

二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)

一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希望大家达到:1.使用各种if语句2.使用循环语句3.使用控制语句——goto和null(goto语句不推荐使用): 二.条件分支语句pl/sql中提供了三种条件分支语句if—then,if–then–else,if–then–else if–then.这里我们可以和java语句进行一个比较. 1).

二十四、oracle pl/sql 变量

一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(reference) --用于操作多条记录4).lob(large object) 二.标量(scalar)——常用类型1).在编写pl/sql块时,如果要使用变量,需在定义部分定义变量.pl/sql中定义变量和常量的语法如下:identifier [constant] datatype [not null]

二十、oracle pl/sql基础

一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则.pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块.比如:分页存储过程模块.订单处理存储过程模块.转账存储过程模块.而且如果使用pl/sql编程,我们可以轻松地完成非

十九、oracle pl/sql简介

一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 二.为什么要学pl/sql1.提高应用程序的运行性能2.模块化的设计思想(分页的过程,订单的过程,转账的过程..)3.减少网络传输量4.提高安全性(sql会包括表名,有时还可能有密码,传输的时候会泄露.PL/SQL就不会) 三.