Uso de xact_abort de sql server y para que sirve .. veamos:
xact_abort nos permite la ejecucion del script aunque contenga errores, es decir, le decimos al motor de sql , que continue, algo parecido a un try , pero en transaccion.
Vamos a partir del ejemplo de la tabla :
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE [dbo].[Personas]( [id] [int] NOT NULL, [Nombre] [varchar](50) NULL, [Apellidos] [varchar](50) NULL, CONSTRAINT [PK_Personas] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO |
En el siguiente codigo establecemos xact_abort a off para poder insertar una fila cuando ya existe una primary key y que el proceso no se pare. si no que se ejecute hasta el final
Te recomiendo que veas el video donde se explica el ejemplo que veras a continuación
Aqui te dejo el codigo del video.
1 2 3 4 5 6 7 8 9 10 11 12 |
set xact_Abort off insert into personas values (1,'Pepe','Perez') insert into personas values (2,'Juan','Sebastian') insert into personas values (3,'Jose','Perez') insert into personas values (4,'Federico','Castro') set xact_Abort on select * from personas delete from personas where id = 1 |
Espero que te sirva un saludo.