Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/11/2008, 15:14
Avatar de sobenavi
sobenavi
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 3 meses
Puntos: 0
Mensaje Respuesta: Tutorial de triggers con sqlserver

Hola....

una aclaracion conceptual: los triggers no los llama el usuario, estos son invocados por el motor de la base de datos cada vez que se ejecuta una accion sobre un registro de la tabla (borrar, actualizar, insertar)..

Otra cosa son los store procedures.. esos si pueden ser llamados por el usuario y se les puede pasar parametros...

Para lo que kieres hacer, de mantener 2 BD iguales (necesité lo mismo con una tabla hace tiempo), lo que hice fue crear un trigger sobre mi tabla original para que cada vez que actualizaran un registro inmediatamente me actualizara la tabla del segundo servidor... el codigo del trigger me encuentra el codigo del almacen que me estan actualizando (cod_alm) y con esto llama a un store procedure que hace lo demas... el codigo del trigger es algo como asi:


CREATE TRIGGER [dbo].[updateMostrador]
ON [dbo].[mostrador]
AFTER UPDATE AS

DECLARE @cod_alm as varchar(3)

SELECT @cod_alm = cod_alm
FROM inserted
Execute sp_updateMostrador @cod_alm

donde mostrador es mi tabla origen... y AFTER UPDATE le estoy diciendo al trigger que debe ejecutarse una vez se haya actualizado el registro... (por ej.. alguien hizo un update sobre la tabla)..... en el select estoy sacando el cod_alm que acaban de actualizar (from inserted)....

y luego le digo al store procedure (sp_updateMostrador) que se ejecute y le paso como parametro el cod_alm que acabo de encontrar...

dentro del store procedure.. el codigo es algo asi:

CREATE PROCEDURE [dbo].[sp_updateMostrador]( @cod_alm varchar(3) )
AS

UPDATE [server2].bd_copia.dbo.Geografía
SET estado = m.estado
FROM bd_original.dbo.mostrador m
WHERE m.cod_alm = [Código geografía]
AND m.cod_alm = @cod_alm


Aqui server2 es un linked_server que debo definir dentro de Microsoft Sql Server Managment Studio -> Server Objects -> Linked Server.... aqui creas uno nuevo definiendole el usuario y contraseña de conexion al server2..