Ayuda a crear Trigger

02/10/2003 - 14:21 por Flavio Escalante | Informe spam
Hola a todos.

Soy novato en esto de los triggers y necesito ayuda para crear uno.

Tengo una Tabla en la que quiero actualizar un campo en función de valor
que tome otro campo. Ejemplo:

Si Campo1 = 'a' entonces Campo2 tendrá que valer 'b'

Necesito que el trigger se ejecute, únicamente, para el registro
actualizado, no para todos los registro de la tabla.

¿Como puedo hacer esto?. El trigger que he creado me actualiza todos los
registros de la tabla y eso NO es lo que quiero, sino, únicamente el
registro modificado.


Muchas gracias por vuestra ayuda.

Un saludo.


Flavio Escalante
Candemat, S.A.

Preguntas similare

Leer las respuestas

#1 Fernando España
02/10/2003 - 18:39 | Informe spam
Bueno, esto de los triggers tienes que pensarlo bien, porque pueden existir
dos formas de manejarlos. La primera, es si la actualizacion sera de un
registro a la vez y la segunda si es en lote, la primera no es tan
recomendable, ya que estarias quitando rapidez y fleibilidad a tu sistema,
pero la segunda debe pensarse bien. para determinar si un campo en
particular fue actualizado, puedes usar UPDATED(), pero si no visita
www.portalsql.com alli hay una explicacion bastante extensa de Miguel Egea.


Fernando España
Gerente Informatica
Alta Tecnologia en Informatica S.A.
www.atisa.com.gt
7a. calle 4-34 Zona 10
Guatemala Centro America
PBX: (502) 3620005

Email:

****************************************

"Flavio Escalante" escribió en el mensaje
news:u0jp6%
Hola a todos.

Soy novato en esto de los triggers y necesito ayuda para crear uno.

Tengo una Tabla en la que quiero actualizar un campo en función de


valor
que tome otro campo. Ejemplo:

Si Campo1 = 'a' entonces Campo2 tendrá que valer 'b'

Necesito que el trigger se ejecute, únicamente, para el registro
actualizado, no para todos los registro de la tabla.

¿Como puedo hacer esto?. El trigger que he creado me actualiza todos


los
registros de la tabla y eso NO es lo que quiero, sino, únicamente el
registro modificado.


Muchas gracias por vuestra ayuda.

Un saludo.


Flavio Escalante
Candemat, S.A.



Respuesta Responder a este mensaje
#2 Liliana Sorrentino
02/10/2003 - 20:31 | Informe spam
Es un ejemplo simple para que te des cuenta cómo podría armarse, pero igual
tené en cuenta las recomendaciones de Fernando.
Saludos... Liliana.

CREATE TABLE tabla
(clave char(10),
campo1 char(10),
campo2 char(10))
GO

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'tu_tabla' AND type 'TR')
DROP TRIGGER tu_tabla
GO

CREATE TRIGGER tu_tabla
ON tabla
FOR UPDATE
AS
BEGIN
UPDATE tabla
SET Campo2 = 'b'
FROM deleted d
LEFT JOIN tabla t ON t.clave = d.clave
LEFT JOIN inserted i ON t.clave = i.clave
WHERE t.campo1 = 'a'
END

INSERT tabla
SELECT 'reg 1', 'campo1', 'campo2' UNION
SELECT 'reg 2', 'campo1', 'campo2'

SELECT * FROM tabla

UPDATE tabla SET campo1 = 'a' WHERE clave = 'reg 1'

SELECT * FROM tabla


"Flavio Escalante" escribió en el mensaje
news:u0jp6#
Hola a todos.

Soy novato en esto de los triggers y necesito ayuda para crear uno.

Tengo una Tabla en la que quiero actualizar un campo en función de


valor
que tome otro campo. Ejemplo:

Si Campo1 = 'a' entonces Campo2 tendrá que valer 'b'

Necesito que el trigger se ejecute, únicamente, para el registro
actualizado, no para todos los registro de la tabla.

¿Como puedo hacer esto?. El trigger que he creado me actualiza todos


los
registros de la tabla y eso NO es lo que quiero, sino, únicamente el
registro modificado.


Muchas gracias por vuestra ayuda.

Un saludo.


Flavio Escalante
Candemat, S.A.



Respuesta Responder a este mensaje
#3 Flavio Escalante
03/10/2003 - 16:10 | Informe spam
Hola de nuevo.

¿Podrías indicarme el artículo?. No soy capaz de verlo.

Muchas gracias.



"Fernando España" escribió en el mensaje
news:
Bueno, esto de los triggers tienes que pensarlo bien, porque pueden


existir
dos formas de manejarlos. La primera, es si la actualizacion sera de un
registro a la vez y la segunda si es en lote, la primera no es tan
recomendable, ya que estarias quitando rapidez y fleibilidad a tu sistema,
pero la segunda debe pensarse bien. para determinar si un campo en
particular fue actualizado, puedes usar UPDATED(), pero si no visita
www.portalsql.com alli hay una explicacion bastante extensa de Miguel


Egea.


Fernando España
Gerente Informatica
Alta Tecnologia en Informatica S.A.
www.atisa.com.gt
7a. calle 4-34 Zona 10
Guatemala Centro America
PBX: (502) 3620005

Email:

****************************************

"Flavio Escalante" escribió en el mensaje
news:u0jp6%
> Hola a todos.
>
> Soy novato en esto de los triggers y necesito ayuda para crear uno.
>
> Tengo una Tabla en la que quiero actualizar un campo en función de
valor
> que tome otro campo. Ejemplo:
>
> Si Campo1 = 'a' entonces Campo2 tendrá que valer 'b'
>
> Necesito que el trigger se ejecute, únicamente, para el registro
> actualizado, no para todos los registro de la tabla.
>
> ¿Como puedo hacer esto?. El trigger que he creado me actualiza todos
los
> registros de la tabla y eso NO es lo que quiero, sino, únicamente el
> registro modificado.
>
>
> Muchas gracias por vuestra ayuda.
>
> Un saludo.
>
>
> Flavio Escalante
> Candemat, S.A.
>
>
>


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