AMIGOS TENGO LO SIGUIENTE:
una tabla cliente con su rut su nombre y apellido.
una tabla cliente_Contacto con el rut , email y telefono.
una tabla cliente_otros con su rut, direccion, comuna,celular.
(Estas tablas son solo un ejemplo de lo real que son como 50 datos)
Bueno lo que necesito es que si se actualiza una de estas tablas o se inserta un cliente todos los datos se copien en una tabla llamada cliente_traspaso_BD que tiene la sigueitne estructura :
rut,nombre,apellido,email,fono,celular,direccion,c omuna.
bueno se que suena simple pero veamos el siguiente caso.
yo lo tengo con un cursor y me funcionan perfecto los trigger de la sgte manera :
CREATE TRIGGER [dbo].[TRG_CLIENTE_CONTACTO]
ON [dbo].[CLIENTE]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
declare @value AS varchar (100)
declare @anniversary AS varchar(1)
DECLARE @RUT AS VARCHAR(15)
DECLARE @NOMBRE AS VARCHAR (100)
DECLARE @APELLIDO AS VARCHAR (100)
DECLARE @EMAIL AS VARCHAR(100)
DECLARE @FONO ASVARCHAR(15)
DECLARE @CELULAR AS VARCHAR(15)
DECLARE @DIRECCION AS VARCHAR(100)
DECLARE @COMUNA AS VARCHAR(20)
declare cursor_CLIENTE cursor for select RUT,NOMBRE,APELLIDO FROM INSERTED
open cursor_CLIENTE
fetch next from cursor_CLIENTE into @RUT,@NOMBRE,@APELLIDO
while @@FETCH_STATUS = 0
BEGIN
SET @EMAIL = (SELECT EMAIL FROM [dbo].[CLIENTE_CONTACTO] WHERE RUT = @RUT)
SET @FONO = (SELECT FONO FROM [dbo].[CLIENTE_CONTACTO] WHERE RUT = @RUT)
SET @CELULAR = (SELECT CIVILITE FROM [dbo].[CLIENTE_OTROS] WHERE NOCLI =@NOCLI)
SET @DIRECCION = (SELECT DIRECCION FROM [dbo].[CLIENTE_OTROS] WHERE RUT = @RUT)
SET @COMUNA= (SELECT COMUNA FROM [dbo].[CLIENTE_OTROS] WHERE RUT = @RUT)
BEGIN
INSERT INTO [enjoy].[dbo].[BUC_tmp_mcc_buc]
values(
@RUT,
@NOMBRE,
@APELLIDO,
@MAIL,
@FONO,
@CELULAR,
@DIRECCION,
@COMUNA
)
END
fetch next from cursor_CLIENTE into @RUT,@NOMBRE,@APELLIDO
END
close cursor_CLIENTE
deallocate cursor_CLIENTE
END
bueno esto funciona a la perfeccion con cargas masivas, actualizaciones todo todo.
Cuando lo hago sin cursor y se actualiza mas de un cliente al mismo tiempo pj:
update cliente SET nombre=nombre para que haga un update a todos los clientes y se pasen a la temporal, no funciona ya que viene mas de un RUT y al comprar devuelve un error, pero con este cursor no pasa eso ya que es como que recorriera el triggers y tomara a los clientes de a UNO.
Necesito hacer esto pero sin cursor y no se me ocurre como puede ser.
Espero me ayuden SL2.
puedo usar SP, TRIGGER Y LO QUE SEA MENOS CURSORES.