트랜잭션 개념

use master

create table tblgenre(code tinyint primary key, name nvarchar(30))
insert tblgenre values (1,'액션')
insert tblgenre values (2,'어드벤쳐')
insert tblgenre values (3,'미스테리')
insert tblgenre values (4,'애니메이션')
drop table tblvideo
delete from tblvideo

create table tblvideo(v_num int primary key, v_name nvarchar(50), v_code tinyint references tblgenre(code))
begin tran
insert tblvideo values (1,'슈렉',4)
if @@error <> 0 begin rollback tran return end
insert tblvideo values (2,'무사',1)
if @@error <> 0 begin rollback tran return end
insert tblvideo values (3,'봄날은 간다',5) --제약조건위반
if @@error <> 0 begin rollback tran return end
commit tran
select * from tblvideo
delete from tblvideo

중첩 트랜잭션

begin tran
insert tblgenre values(6,'공포')
select * from tblgenre
begin tran
insert tblgenre values(7,'어린이')
select * from tblgenre
commit tran
select * from tblgenre
rollback tran
select * from tblgenre

@@trancount

begin tran
insert tblgenre values(6,'공포')
select @@trancount
begin tran
insert tblgenre values(7,'어린이')
select @@trancount
commit tran
select @@trancount
rollback tran
select @@trancount

declare @tranname  nvarchar(50)
select @tranname ='이하영'
begin tran @tranname
update tblgenre
set name = '애니메이션' where code = 4
commit tran 이하영

Lock
/*@trancount : 트랜잭션이 실행중인지아닌지를 알아보는 시스템변수
@@sp_id : 현재 세션의 ID를 보여준다.
sp_lock : 모든 잠금 상태를 보여준다.
Db_name() : 사용중인 데이터베이스 이름 확인
object_name() : 사용중인 오브젝트 확인 */

select @@trancount, @@spid -- sp_who
sp_lock
select db_name(), object_name(85575343) --sp_lock check
sp_databases
------------------------------------------------------------------------------------
begin tran
select @@trancount
select * from tblgenre
sp_lock
insert tblgenre values(6,'스릴러')
sp_lock
rollback tran
sp_lock

'정리없는자료 > DB' 카테고리의 다른 글

sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23

+ Recent posts