暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

运行上面的程序,下面选项中哪几个更改永久保存到数据库()

DB宝 2016-12-24
846


Q:7 阅读下面的PL/SQL程序块:

  1. BEGIN

  2.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,'WANG','FRED');

  3.   SAVEPOINT SAVE_A;

  4.   

  5.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,'WOO','DAVID');

  6.   SAVEPOINT SAVE_B;

  7.   

  8.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,'LDD','FRIK');

  9.   SAVEPOINT SAVE_C;

  10.   

  11.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(45000,'LHR','DAVID');

  12.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(25000,'LEE','BERT');

  13.   ROLLBACK TO SAVEPOINT SAVE_C;

  14.  

  15.   INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,'CHUNG','MIKE');

  16.   ROLLBACK TO SAVEPOINT SAVE_B;

  17.   

  18.   COMMIT;

  19. END;



运行上面的程序,下面选项中哪几个更改永久保存到数据库()(多选题)

AINSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,'LDD','FRIK');

BINSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,'CHUNG','MIKE');

CINSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,'WANG','FRED');

DINSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,'WOO','DAVID');


     

A
答案:C、D。

。CD

保存点(SAVEPOINT)是事务处理过程中的一个标志,与回滚命令(ROLLBACK)结合使用。其主要用途是允许用户将某一段处理进行回滚而不必回滚整个事务。

1)执行SAVEPOINT SAVE_A的时候创建了一个保存点SAVE_A

2)执行SAVEPOINT SAVE_B的时候创建了一个保存点SAVE_B

3)执行SAVEPOINT SAVE_C的时候创建了一个保存点SAVE_C

4)在执行ROLLBACK TO SAVEPOINT SAVE_C后,SAVEPOINT SAVE_C到当前语句之间所有的操作都被回滚;也就是说回滚到了3)的状态;

5)在执行ROLLBACK TO SAVEPOINT SAVE_B后,SAVEPOINT SAVE_B到当前语句之间所有的操作都被回滚;也就是说回滚到了2)的状态;

6)在执行COMMIT后,只有SAVEPOINT SAVE_B之前的操作会被提交从而永久保存到数据库。

使用程序验证以上的分析,如下所示:


  1. SYS@lhrdb> create table  EMPLOYEE

  2.   2  (

  3.   3     first_name     VARCHAR2(20),

  4.   4    last_name      VARCHAR2(25),

  5.   5    salary         NUMBER(8,2)

  6.   6  );

  7. Table created.

  8. SYS@lhrdb> BEGIN

  9.   2    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,'WANG','FRED');

  10.   3    SAVEPOINT SAVE_A;

  11.   4    

  12.   5    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,'WOO','DAVID');

  13.   6    SAVEPOINT SAVE_B;

  14.   7    

  15.   8    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,'LDD','FRIK');

  16.   9    SAVEPOINT SAVE_C;

  17.  10    

  18.  11    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(45000,'LHR','DAVID');

  19.  12    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(25000,'LEE','BERT');

  20.  13    ROLLBACK TO SAVEPOINT SAVE_C;

  21.  14  

  22.  15    INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,'CHUNG','MIKE');

  23.  16    ROLLBACK TO SAVEPOINT SAVE_B;

  24.  17    

  25.  18    COMMIT;

  26.  19  END;

  27.  20  /

  28. PL/SQL procedure successfully completed.

  29. SYS@lhrdb> SELECT * FROM EMPLOYEE;

  30. FIRST_NAME           LAST_NAME                     SALARY

  31. -------------------- ------------------------- ----------

  32. FRED                 WANG                           35000

  33. DAVID                WOO                            40000


综上分析,题目中的程序块执行完毕后,只有SAVEPOINT SAVE_B之前的操作会被提交从而永久保存到数据库,显然,CD选项正确。

所以,本题的答案为CD






DB笔试面试历史连接

【DB笔试面试6】适合建立索引的字段是()(多选题)
【DB笔试面试5】在Oracle数据库中,下面关于函数的描述正确的是()
⊙ 【DB笔试面试4】在Oracle中,关于PL/SQL下列描述正确的是()
【DB笔试面试3】下面哪种情况会让普通用户连接到Oracle数据库,但不能创建表()
【DB笔试面试2】下面哪个用户不是Oracle缺省安装后就存在的用户()
【DB笔试面试1】下列不属于Oracle的逻辑结构的是()






About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 文章内容来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处


长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

DBA求职布道者

◆ DB最新咨询

◆ DB求职面经
◆ DB干货推送◆ DB最新技术
◆ DB职业发展与规划◆ DB进阶思路与方法

长按二维码点选(识别图中二维码)

最后修改时间:2020-01-10 21:23:53
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论