ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制-rollback语句

PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制-rollback语句

原创 Oracle 作者: luisedalian 时间:2014-03-17 08:20:28 0 删除 编辑

rollback语句

rollback语句结束当前的事务,并撤销在该事务中的任何改变。

如果犯了错误,如错误地删除一行,回滚语句可以恢复原始的数据。

因为SQL语句失败或PL/SQL语句引发异常,回滚可以让你更正错误从新开始。

DROP TABLE emp_name;

CREATE TABLE emp_name AS SELECT employee_id, last_name FROM employees;

CREATE UNIQUE INDEX empname_ix ON emp_name (employee_id);

 

DROP TABLE emp_sal;

CREATE TABLE emp_sal AS

    SELECT employee_id, salary

    FROM employees;

 

CREATE UNIQUE INDEX empsal_ix ON emp_sal (employee_id);

 

DROP TABLE emp_job;

CREATE TABLE emp_job AS

    SELECT employee_id, job_id

    FROM employees;

 

CREATE UNIQUE INDEX empjobid_ix ON emp_job (employee_id);

 

DECLARE

    emp_id        NUMBER(6);

    emp_lastname  VARCHAR2(25);

    emp_salary    NUMBER(8,2);

    emp_jobid     VARCHAR2(10);

BEGIN

    SELECT employee_id, last_name, salary, job_id

    INTO emp_id, emp_lastname, emp_salary, emp_jobid

    FROM employees

    WHERE employee_id = 120;

 

    INSERT INTO emp_name (employee_id, last_name)

    VALUES (emp_id, emp_lastname);

 

    INSERT INTO emp_sal (employee_id, salary)

    VALUES (emp_id, emp_salary);

 

    INSERT INTO emp_job (employee_id, job_id)

    VALUES (emp_id, emp_jobid);

 

EXCEPTION

    WHEN DUP_VAL_ON_INDEX THEN

        ROLLBACK;

        DBMS_OUTPUT.PUT_LINE('插入被回滚');

END;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1122924/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6044094