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