Programming/SQL

[SQL/실습] 트랜잭션의 활용

reeme 2020. 12. 17. 22:54

트랜잭션의 활용

 

-- 트랜잭션 모드 (기본) : 자동 커밋 트랜잭션

update employee
set salary = salary + commission
where eno='103'
;




-- 트랜잭션 모드 : 명시적 트랜잭션

start transaction; -- 명시적 트랜젝션 시작
-- delete from employee;
-- insert into employee(eno,ename,job,manager,hiredate,salary,commission,dno) 
-- values('117','e17','chief','101','2020-11-02',1500,0,30);
-- rollback; -- 취소하기 (되돌리기)
-- commit; -- 반영하기 커미션하면 롤백이 안됨 
insert into employee(eno,ename,job,manager,hiredate,salary, commission,dno)
values('117','e17','chief','101','2010-11-02','1000',0,'30');
savepoint a; -- rollback이 되는 시점 a라는 이름으로 지정 
insert into employee(eno,ename,job,manager,hiredate,salary, commission,dno)
values('118','e18','chief','101','2010-11-02','1000',0,'30');
insert into employee(eno,ename,job,manager,hiredate,salary, commission,dno)
values('119','e19','chief','101','2010-11-02','1000',0,'30');
delete from employee where eno='117';
delete from employee where eno='118';
delete from employee where eno='119';
select * from employee;
rollback to a; -- savepoint의 이름이 a라는 rollback 실행 savepoint ~ rollback to 까지 실행구간 


-- 트랜잭션을 시작해서 update employee set salary * 2; 를 실행하고 커밋을 하지않은 상태에서 workbench를 종료합니다 
-- 그리고 다시 workbench를 실행해서 select*from employee를 실행해서 update되었는지 확인해보세요

start transaction;

update employee
set salary = salary * 2;

select * from employee;