TRIGGER - Urgente gracias

19/09/2006 - 18:48 por Angel Zapata | Informe spam
Hola, he conseguido realizar un sp con update y leyendo la estructura que
necesitaba,

Pero necesito crear un trigger del siguiente modo
1º que no se ejecute si la condicion ClienteEstructura.Nivel <> 7 es cierta
2º Debe actualizar en la ficha del cliente los datos leidos de la
estructura, pero como desconozco el codigo del cliente al que debe
actualizar, debería serlo sobre el registro insertado.

Este es el procedimiento que tengo y así me funciona manualmente

Alter PROCEDURE spEstructura
@Cliente as int AS

Declare @Gerente AS Int, @Zona AS Int, @Delegado AS Int, @Equipo AS Int

Declare TGEstructura CURSOR FOR
SELECT ClienteEstructura1.PagAgeCodigo AS Nivel4,
ClienteEstructura2.PagAgeCodigo AS Nivel3,
ClienteEstructura3.PagAgeCodigo AS Nivel2,
ClienteEstructura4.PagAgeCodigo AS Nivel1
FROM dbo.ClienteEstructura INNER JOIN
dbo.ClienteEstructura ClienteEstructura1 ON
dbo.ClienteEstructura.PagPirCodigo = ClienteEstructura1.PagPirCodigo
AND
dbo.ClienteEstructura.PagNodoPadre = ClienteEstructura1.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura2 ON
ClienteEstructura1.PagPirCodigo = ClienteEstructura2.PagPirCodigo
AND
ClienteEstructura1.PagNodoPadre = ClienteEstructura2.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura3 ON
ClienteEstructura2.PagPirCodigo = ClienteEstructura3.PagPirCodigo
AND
ClienteEstructura2.PagNodoPadre = ClienteEstructura3.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura4 ON
ClienteEstructura3.PagNodoPadre = ClienteEstructura4.PagNodo
AND
ClienteEstructura3.PagPirCodigo = ClienteEstructura4.PagPirCodigo
WHERE (dbo.ClienteEstructura.PagNivCodigo = 7) AND
(dbo.ClienteEstructura.PagAgeCodigo = @Cliente)

Open Estructura

/* Actualizar ficha cliente */

FETCH NEXT FROM TGEstructura
INTO @Nivel4, @Nivel3, @Nivel2, @Nivel1
WHILE @@FETCH_STATUS = 0

BEGIN
UPDATE Cliente SET ClienteNivel4=@Nivel4, ClienteNivel3=@Nivel3,
ClienteNivel2=@Nivel2, ClienteNivel1=@Nivel1
WHERE CliCodigo=@Cliente
END

Close TGEstructura
Deallocate TGEstructura

Muchas gracias por vuestra ayuda

Angel Zapata
Murcia - España

Preguntas similare

Leer las respuestas

#1 Gabriel Dameñov
19/09/2006 - 21:11 | Informe spam
/*ESTE TRIGGER ASUME QUE SE INSERTÓ SOLO UN REGISTRO*/

CREATE TRIGGER Probando ON [dbo].[ClienteEstructura]
FOR INSERT
AS
IF (SELECT Nivel FROM Inserted) <> 7
BEGIN
UPDATE Clientes SET
blablabla...
WHERE Clientes.idCliente IN
(SELECT idCliente FROM Inserted)
END



Gabriel J. Dameñov
(2152) Granadero Baigorria - Santa Fe
-
"Angel Zapata" <a n g e l . z a p a t a @ s i g l h o g a r x x i . c o m>
escribió en el mensaje news:
Hola, he conseguido realizar un sp con update y leyendo la estructura que
necesitaba,

Pero necesito crear un trigger del siguiente modo
1º que no se ejecute si la condicion ClienteEstructura.Nivel <> 7 es
cierta
2º Debe actualizar en la ficha del cliente los datos leidos de la
estructura, pero como desconozco el codigo del cliente al que debe
actualizar, debería serlo sobre el registro insertado.

Este es el procedimiento que tengo y así me funciona manualmente

Alter PROCEDURE spEstructura
@Cliente as int AS

Declare @Gerente AS Int, @Zona AS Int, @Delegado AS Int, @Equipo AS Int

Declare TGEstructura CURSOR FOR
SELECT ClienteEstructura1.PagAgeCodigo AS Nivel4,
ClienteEstructura2.PagAgeCodigo AS Nivel3,
ClienteEstructura3.PagAgeCodigo AS Nivel2,
ClienteEstructura4.PagAgeCodigo AS Nivel1
FROM dbo.ClienteEstructura INNER JOIN
dbo.ClienteEstructura ClienteEstructura1 ON
dbo.ClienteEstructura.PagPirCodigo = ClienteEstructura1.PagPirCodigo
AND
dbo.ClienteEstructura.PagNodoPadre = ClienteEstructura1.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura2 ON
ClienteEstructura1.PagPirCodigo = ClienteEstructura2.PagPirCodigo
AND
ClienteEstructura1.PagNodoPadre = ClienteEstructura2.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura3 ON
ClienteEstructura2.PagPirCodigo = ClienteEstructura3.PagPirCodigo
AND
ClienteEstructura2.PagNodoPadre = ClienteEstructura3.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura4 ON
ClienteEstructura3.PagNodoPadre = ClienteEstructura4.PagNodo
AND
ClienteEstructura3.PagPirCodigo = ClienteEstructura4.PagPirCodigo
WHERE (dbo.ClienteEstructura.PagNivCodigo = 7) AND
(dbo.ClienteEstructura.PagAgeCodigo = @Cliente)

Open Estructura

/* Actualizar ficha cliente */

FETCH NEXT FROM TGEstructura
INTO @Nivel4, @Nivel3, @Nivel2, @Nivel1
WHILE @@FETCH_STATUS = 0

BEGIN
UPDATE Cliente SET ClienteNivel4=@Nivel4, ClienteNivel3=@Nivel3,
ClienteNivel2=@Nivel2, ClienteNivel1=@Nivel1
WHERE CliCodigo=@Cliente
END

Close TGEstructura
Deallocate TGEstructura

Muchas gracias por vuestra ayuda

Angel Zapata
Murcia - España


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