orientdb数据库-PL/SQL事务

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本章中,我们将讨论和学习PL/SQL中的事务。 数据库事务是由一个或多个相关SQL语句组成的原子工作单元。它被称为原子操作,因为构成事务的SQL语句带来的数据库修改可以共同提交,即永久化到数据库或从数据库回滚(撤销)。

成功执行的SQL语句和提交的事务不一样。即使成功执行SQL语句,除非提交包含语句的事务,否则可以回滚该语句,并且可以撤消语句所做的所有更改。

开始和结束事务

事务有开始和结束。当发生以下事件之一时,事务即开始 –

  • 连接到数据库后执行第一个SQL语句。
  • 在事务完成后发出的每个新的SQL语句。

事务在下列事件之一发生时结束 –

  • 发出了COMMITROLLBACK语句。
  • 发出DDL语句,例如:CREATE TABLE语句; 因为在这种情况下,自动执行COMMIT
  • 发布DCL语句,如:GRANT声明; 因为在这种情况下,自动执行COMMIT
  • 用户从数据库断开连接。
  • 用户通过发出EXIT命令从SQL * PLUS退出,COMMIT自动执行。
  • SQL * Plus异常终止,会自动执行ROLLBACK
  • DML语句失败; 在这种情况下,会自动执行ROLLBACK来撤消该DML语句。

提交事务

通过发出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命令可以撤销对不带COMMIT的数据库所做的更改。

ROLLBACK命令的一般语法是 –

ROLLBACK [TO SAVEPOINT < savepoint_name>]; 

当事务由于某种前所未有的情况而中止,如系统故障时,自提交以来整个事务被自动回滚。 如果不使用保存点(savepoint),那么只需使用以下语句来回滚所有更改。

ROLLBACK; 

保存点 – Savepoints

保存点(Savepoints)是有助于通过设置一些检查点将长事务拆分成更小的单元的标记。通过在长事务中设置保存点,如果需要,可以回滚到检查点。这是通过发出SAVEPOINT命令完成的。

SAVEPOINT命令的一般语法是 –

SAVEPOINT < savepoint_name >; 

例如,

INSERT 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的所有更改。

之后,所做新的改变将重新开始。

自动事务控制

要在执行INSERTUPDATEDELETE命令时自动执行COMMIT,可以将AUTOCOMMIT环境变量设置为 –

SET AUTOCOMMIT ON; 

也可以使用以下命令关闭事务自动提交模式 –

SET AUTOCOMMIT OFF; 

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 plsql数据库/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/05/14/orientdb数据库-pl-sql事务/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注