
27/11/2008, 15:14
|
 | | | Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 20 años, 1 mes Puntos: 0 | |
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.. |