Вы находитесь на странице: 1из 3

COMMIT TRANSACTION

Marca el final de una transaccin correcta, implcita o definida por el usuario. Si


@@TRANCOUNT es 1, COMMT TRANSACTON !ace "ue todas las
modificaciones efectuadas so#re los datos desde el inicio de la transaccin sean parte
permanente de la #ase de datos, li#era los recursos mantenidos por la cone$in % reduce
@@TRANCOUNT a &. Si @@TRANCOUNT es ma%or "ue 1, COMMT
TRANSACTON slo reduce @@TRANCOUNT en 1.
Sintaxis
COMMT ' TRAN ' SACTON ( ' transaction_name ) @tran_name_variable ( (
Argumentos
transaction_name
Microsoft* S+, Ser-er. lo omite. transaction_name especifica un nom#re de
transaccin asi/nado por una pre-ia instruccin 012N TRANSACTON.
transaction_name tiene "ue cumplir las re/las de definicin de identificadores, pero
slo se utili3an sus 45 primeros caracteres. transaction_name se puede utili3ar como
a%uda al pro/ramador, indic6ndole con "u7 instruccin 012N TRANSACTON
anidada est6 asociada la instruccin COMMT TRANSACTON.
@tran_name_variable
Se trata del nom#re de una -aria#le definida por el usuario "ue contiene un nom#re de
transaccin -6lido. ,a -aria#le se de#e declarar con un tipo de datos char, varchar,
nchar o nvarchar.
Observaciones
1s responsa#ilidad del pro/ramador de Transact8S+, utili3ar COMMT
TRANSACTON slo en el punto donde todos los datos a los "ue !ace referencia la
transaccin sean l/icamente correctos.
Si la transaccin "ue se !a confirmado era una transaccin Transact8S+, distri#uida,
COMMT TRANSACTON !ace "ue MS 9TC utilice el protocolo de confirmacin en
dos fases para en-iar confirmaciones a los ser-idores in-olucrados en la transaccin. Si
una transaccin local afecta a dos o m6s #ases de datos del mismo ser-idor, S+, Ser-er
utili3a una confirmacin interna en dos fases para confirmar todas las #ases de datos
in-olucradas en la transaccin.
Cuando se utili3a en transacciones anidadas, las confirmaciones de las transacciones
anidadas no li#eran recursos ni !acen permanentes sus modificaciones. ,as
modificaciones so#re los datos slo "uedan permanentes % se li#eran los recursos
cuando se confirma la transaccin m6s e$terna. Cada COMMT TRANSACTON "ue
se e:ecute cuando @@TRANCOUNT sea ma%or "ue 1 slo reduce @@TRANCOUNT
en 1. Cuando @@TRANCOUNT lle/a a &, se confirma la transaccin e$terna entera.
Como S+, Ser-er omite transaction_name, la e:ecucin de una instruccin COMMT
TRANSACTON "ue !a/a referencia al nom#re de una transaccin e$terna cuando
!a%a transacciones anidadas pendientes slo reduce @@TRANCOUNT en 1.
,a e:ecucin de COMMT TRANSACTON cuando @@TRANCOUNT es & produce
un error "ue indica "ue no !a% nin/una instruccin 012N TRANSACTON asociada.
No se puede cancelar una transaccin despu7s de e:ecutar una instruccin COMMT
TRANSACTON, por"ue las modificaciones so#re los datos %a son parte permanente de
la #ase de datos.
Ejemplos
A Con!irmar una transacci"n
1ste e:emplo incrementa el anticipo "ue se pa/a al autor si las -entas anuales de un li#ro
son superiores a ;<.&&&.
BEGIN TRANSACTION
USE pubs
GO
UPDATE titles
SET advance = advance * 1!"
#$ERE %td&sales ' ()))
GO
CO**IT
GO
# Con!irmar una transacci"n ani$a$a
1ste e:emplo crea una ta#la, /enera tres ni-eles de transacciones anidadas % despu7s
confirma la transaccin anidada. Aun"ue la instruccin COMMT TRANSACTON
tiene el par6metro transaction_name, no !a% relacin entre las instrucciones COMMT
TRANSACTON % 012N TRANSACTON. ,os par6metros transaction_name slo
son a%udas para "ue el pro/ramador pueda ase/urarse de "ue escri#e el n=mero
apropiado de confirmaciones para reducir @@TRANCOUNT !asta &, confirmando as
la transaccin m6s e$terna.
CREATE TAB+E TestT,an -C.la INT PRI*AR/ 0E/1 C.lb C$AR-233
GO
BEGIN TRANSACTION Oute,T,an 44 55TRANCOUNT set t. 1
GO
INSERT INTO TestT,an 6A+UES -11 7aaa73
GO
BEGIN TRANSACTION Inne,1 44 55TRANCOUNT set t. !
GO
INSERT INTO TestT,an 6A+UES -!1 7bbb73
GO
BEGIN TRANSACTION Inne,! 44 55TRANCOUNT set t. 2
GO
INSERT INTO TestT,an 6A+UES -21 7ccc73
GO
CO**IT TRANSACTION Inne,! 44 Dec,e8ents 55TRANCOUNT t. !
44 N.t9in: c.88itted
GO
CO**IT TRANSACTION Inne,1 44 Dec,e8ents 55TRANCOUNT t. 1
44 N.t9in: c.88itted
GO
CO**IT TRANSACTION Oute,T,an 44 Dec,e8ents 55TRANCOUNT t. )
44 C.88its .ute, t,ansacti.n Oute,T,an
GO
%&ase tambi&n
012N 9STR0UT19 TRANSACTON
012N TRANSACTON
COMMT >OR?
RO,,0AC? TRANSACTON
RO,,0AC? >OR?
SA@1 TRANSACTON
@@TRANCOUNT
Transacciones

Вам также может понравиться