desactivar trigger por sesion

18/07/2007 - 22:05 por Germán | Informe spam
se puede desactivar el trigger por la conexion actual
mientras con las otras conexiones sigue activo.

o hay otra tecnica.?

saludos

Preguntas similare

Leer las respuestas

#1 Maxi
18/07/2007 - 22:17 | Informe spam
No, los triggers si se desactivan seran para todas las sesiones.
Si vos queres poner logica lo que podrias hacer dentro del trigger es
identificar al usuario o algo asi y con eso saber que hacer dentro, esto
simplemente lo haces con un if

por ejemplo

CREATE TRIGGER ...

IF SUSER_SNAME() <> 'PEPITO'
BEGIN
TU CODIGO DEL TRIGER
END


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Germán" escribió en el mensaje
news:
se puede desactivar el trigger por la conexion actual
mientras con las otras conexiones sigue activo.

o hay otra tecnica.?

saludos


Respuesta Responder a este mensaje
#2 Alejandro Mesa
18/07/2007 - 22:34 | Informe spam
Hola Maxi,

Mira 'PEPITO' es popular, no solo lo usamos para los cuentos, sino tambien
para ejemplos de T-SQL. :-)

Saludos,
Alejandro Mesa


"Maxi" wrote:

No, los triggers si se desactivan seran para todas las sesiones.
Si vos queres poner logica lo que podrias hacer dentro del trigger es
identificar al usuario o algo asi y con eso saber que hacer dentro, esto
simplemente lo haces con un if

por ejemplo

CREATE TRIGGER ...

IF SUSER_SNAME() <> 'PEPITO'
BEGIN
TU CODIGO DEL TRIGER
END


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Germán" escribió en el mensaje
news:
> se puede desactivar el trigger por la conexion actual
> mientras con las otras conexiones sigue activo.
>
> o hay otra tecnica.?
>
> saludos
>
>



Respuesta Responder a este mensaje
#3 Maxi
18/07/2007 - 22:43 | Informe spam
ajaaj :-))), en todos mis sistemas veras un pepe o pepito por ahi ;)


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Alejandro Mesa" escribió en el
mensaje news:
Hola Maxi,

Mira 'PEPITO' es popular, no solo lo usamos para los cuentos, sino tambien
para ejemplos de T-SQL. :-)

Saludos,
Alejandro Mesa


"Maxi" wrote:

No, los triggers si se desactivan seran para todas las sesiones.
Si vos queres poner logica lo que podrias hacer dentro del trigger es
identificar al usuario o algo asi y con eso saber que hacer dentro, esto
simplemente lo haces con un if

por ejemplo

CREATE TRIGGER ...

IF SUSER_SNAME() <> 'PEPITO'
BEGIN
TU CODIGO DEL TRIGER
END


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Germán" escribió en el mensaje
news:
> se puede desactivar el trigger por la conexion actual
> mientras con las otras conexiones sigue activo.
>
> o hay otra tecnica.?
>
> saludos
>
>



Respuesta Responder a este mensaje
#4 Javier Loria
19/07/2007 - 06:18 | Informe spam
Hola German:
Eso puedes hacerlo, siempre y cuando participe en la misma transaccion.
El siguiente codigo te puede servir:
1) En una ventana de SSMS ejecuta el siguiente codigo:
=CREATE DATABASE Test
GO
USE Test
GO
CREATE TABLE Test(
Test INT NOT NULL PRIMARY KEY
)
GO
CREATE Trigger TrTest ON dbo.Test
FOR INSERT, DELETE, UPDATE
AS
PRINT 'Ok'
GO
INSERT Test
VALUES (1)
= Este codigo crea una base de datos, una tabla y un trigger.
2) En OTRA ventana del SSMS ejecuta el siguiente codigo:
¾GIN TRAN;
DISABLE TRIGGER dbo.TrTest
ON dbo.Test

INSERT Test
VALUES (2)
= El codigo inserta una fila y deshabilita el trigger.

3) De vuelta en la primera ventana escribe:
=INSERT Test
VALUES (3)
= Veras como el codigo queda ejecutando la consulta porque esta bloqueado
por la segunda ventana.

4) En la segunda ventana escribe:
=ENABLE TRIGGER dbo.TrTest
ON dbo.Test

COMMIT
= Verás que la transaccion se cierra y tanto la primera como la segunda
ventana ejecutan el codigo.
Lo que se puede ver es que el codigo DDL (CREATE, ALTER, DROP)
participa en transacciones, y por ende puedes usarla para desactivar el
trigger en la conexion actual siempre y cuando uses transacciones. Tambien
se desprende que que bloquea a los otros :(
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Germán" wrote in message
news:
se puede desactivar el trigger por la conexion actual
mientras con las otras conexiones sigue activo.

o hay otra tecnica.?

saludos


Respuesta Responder a este mensaje
#5 Javier Loria
19/07/2007 - 06:24 | Informe spam
Hola German:
Eso puedes hacerlo, siempre y cuando participe en la misma transaccion.
El siguiente codigo te puede servir:
1) En una ventana de SSMS ejecuta el siguiente codigo:
=CREATE DATABASE Test
GO
USE Test
GO
CREATE TABLE Test(
Test INT NOT NULL PRIMARY KEY
)
GO
CREATE Trigger TrTest ON dbo.Test
FOR INSERT, DELETE, UPDATE
AS
PRINT 'Ok'
GO
INSERT Test
VALUES (1)
= Este codigo crea una base de datos, una tabla y un trigger.
2) En OTRA ventana del SSMS ejecuta el siguiente codigo:
¾GIN TRAN;
DISABLE TRIGGER dbo.TrTest
ON dbo.Test

INSERT Test
VALUES (2)
= El codigo inserta una fila y deshabilita el trigger.

3) De vuelta en la primera ventana escribe:
=INSERT Test
VALUES (3)
= Veras como el codigo queda ejecutando la consulta porque esta bloqueado
por la segunda ventana.

4) En la segunda ventana escribe:
=ENABLE TRIGGER dbo.TrTest
ON dbo.Test

COMMIT
= Verás que la transaccion se cierra y tanto la primera como la segunda
ventana ejecutan el codigo.
Lo que se puede ver es que el codigo DDL (CREATE, ALTER, DROP)
participa en transacciones, y por ende puedes usarla para desactivar el
trigger en la conexion actual siempre y cuando uses transacciones. Tambien
se desprende que que bloquea a los otros :(
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Germán" wrote in message
news:
se puede desactivar el trigger por la conexion actual
mientras con las otras conexiones sigue activo.

o hay otra tecnica.?

saludos


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida