Oracle操作语句--增加/删除

1.删除1980年雇员的雇员信息;

delete  from myemp

where     hiredate between to_date('1980-1-1','yyyy-mm-dd')

      and to_date('1980-12-31','yyyy-mm-dd') ;

执行上述语句后其实还没有真正意义上的更新,必须执行下面的语句才会彻底删除,否则其他session会话查询的时候,1980年的员工信息还依然存在。但是当你退出之后Oracle会自动commit的。

      COMMIT WORK;

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2、事务操作命令

S1:SCOTT用户分别登录两个SQL PLUS窗口是session1和session2;

S2:窗口session1和session2分别查看myemp数据表信息;

S3:窗口session1,执行语句:

INSERT

INTO myemp(empno,ename,hiredate, job, sal)

VALUES(1234,'李兴华',to_date('1989-09-19','yyyy-mm-dd'),'MANAGER',3000);

UPDATE MYEMP

SET SAL=5000 WHERE EMPNO=1234;

SAVEPOINT SP_A;

SELECT count(*) FROM myemp;

结果:

切换窗口session2,执行语句:

SELECT count(*) FROM myemp;

结果:

 

S4:窗口session1,执行语句:

INSERT

 INTO myemp(empno,ename,hiredate, job, sal)

 VALUES(5678,'董鸣楠',to_date('2003-07-27','yyyy-mm-dd'), 'HR',2000);

UPDATE myemp

SET job='CEO' WHERE empno=5678;

SAVEPOINT SP_B;

SELECT count(*) FROM myemp;

结果:

切换窗口session2,执行语句:

SELECT count(*) FROM myemp;

结果:

S5:窗口session1,执行语句:

DELETE FROM myemp;

SELECT count(*) FROM myemp;

结果:

切换窗口session2,执行语句:

SELECT count(*) FROM myemp;

结果:

S6:窗口session1,执行语句:

S6:窗口session1,执行语句:

--使用回滚到节点sp_B
ROLLBACK  TO SP_B;
SELECT count(*) FROM myemp;

ROLLBACK TO SP_A;

SELECT count(*) FROM myemp;

ROLLBACK;

SELECT count(*) FROM myemp

S7:窗口session1,执行语句:

INSERT

 INTO myemp(empno,ename,hiredate, job, sal)

 VALUES(5678,'董鸣楠',to_date('2003-07-27','yyyy-mm-dd'), 'HR',2000);

UPDATE myemp

SET job='CEO' WHERE empno=5678;

COMMIT;

SELECT count(*) FROM myemp;

结果:

 

切换窗口session2,执行语句:

SELECT count(*) FROM myemp;

结果:

---上述主要实验的目的是想让读者明白设置保存节点,与事件回滚的用法,还有就是使用删除语句和插入语句必须使用commit语句,不然只是视图显示出来你要的结果而已,其它session会话看不见操作,虽然退出Oracle后他会自动commit,但是保险起见还是commit,其他session在同一时间登录的才可以看到更新操作。

 

猜你喜欢

转载自www.cnblogs.com/hmy-666/p/11824982.html
今日推荐