본문 바로가기

컴퓨터/데이터베이스

[트랜잭션과 트리거] 오늘의 유인물

use sqldb2a

select * from 부서
select * from 사원
select * from 자격증

1.

insert into 부서 values('10','영업부')
insert into 부서 values('20','관리부')
insert into 사원 values('A001','홍길동','1111','남', 0, '10',NULL)
insert into 사원 values('A002','조조','2222','남', 0, '20',NULL)

2.

begin try
begin tran
insert into 자격증 values('A001', 1, '가나01','산업기사1급', '2001/01/01',
       '2005/01/01')
update 사원 set 자격증갯수=자격증갯수+1
where 사번='A001'
commit tran
end try
begin catch
rollback tran
end catch

3.
begin try
begin tran
delete from 자격증 where 사번='A001' and 일련번호=1
update 사원 set 자격증갯수=자격증갯수-1
where 사번='A001'
commit tran
end try
begin catch
rollback tran
end catch

4.


begin try
begin tran
update 자격증 set 사번='A002' where 사번='A001' and 일련번호=1
update 사원 set 자격증갯수=자격증갯수-1 where 사번='A001'
update 사원 set 자격증갯수=자격증갯수+1 where 사번='A002'
commit tran
end try
begin catch
rollback tran
end catch

5.
create trigger jtrig01 on 자격증 for insert
as
declare @snum nvarchar(5)
select @snum=사번 from inserted
update 사원 set 자격증갯수=자격증갯수+1
where 사번= @snum

insert into 자격증 values('A001', 2, '가나22','컴활1급', '2005/01/10',
       '2010/01/10')

select * from 부서
select * from 사원
select * from 자격증


6.

create trigger jtrig02 on 자격증 for delete
as declare @snum nvarchar(5)
select @snum=사번 from deleted
update 사원 set 자격증갯수=자격증갯수-1
where 사번=@snum

delete from 자격증 where 사번='A001' and 일련번호=2

7.

select * from 부서
select * from 사원
select * from 자격증

alter trigger jtrig03 on 자격증 for update
as declare @snum nvarchar(5), @snum2 nvarchar(5)
select @snum=사번 from deleted
select @snum2=사번 from inserted
update 사원 set 자격증갯수=자격증갯수-1 where 사번=@snum


update 자격증 set 사번='A002' where 사번='A001' and 일련번호=2


delete from 자격증 where 사번='A002' and 일련번호=2


insert into 자격증 values('A001', 2, '가나22','컴활2급', '2005/01/10',
       '2010/01/10')