Discussion:
Insertar y Actualizar Tabla al tiempo
(demasiado antiguo para responder)
Aventurero
2009-10-12 18:06:04 UTC
Permalink
Buenas tardes.

Necesito Insertar registros y actualizar los que existen.
Y necesito saber si se puede en una sola instruccion en Sql Server 2005 y en
un Store Procedure.

Tengo esta tabla en la Base de Datos
TablaClientes
Identificacion (clave única)
Nombres
Apellidos
Direccion
Ciudad
Y otra
Tengo esta tabla TablaTemporal, con registros de un punto de venta para
actualizar los registros
Identificacion
Nombres
Apellidos
Direccion
Ciudad
Pero no se como hacer para Insertar los registros que no existen y
actualizar los que están en la tabla TablaClientes dese la tabla
TablaTemporal.

Gracias por su ayuda.

Atentamente,


Aventurero
Maxi Accotto
2009-10-12 18:27:46 UTC
Permalink
Hola, en una sola sentencia solo se puede en 2008 con MERGE, en versiones
anteriores debes hacer las dos operaciones.
Claro que se puede poner dentro de un store

Aqui te dejo un ejemplo

BEGIN TRAN

UPDATE TGT
SET TGT.companyname = SRC.companyname,
TGT.phone = SRC.phone,
TGT.address = SRC.address
FROM dbo.Customers AS TGT
JOIN dbo.CustomersStage AS SRC
ON TGT.custid = SRC.custid;

INSERT INTO dbo.Customers (custid, companyname, phone, address)
SELECT custid, companyname, phone, address
FROM dbo.CustomersStage AS SRC
WHERE NOT EXISTS
(SELECT * FROM dbo.Customers AS TGT
WHERE TGT.custid = SRC.custid);
Post by Aventurero
Buenas tardes.
Necesito Insertar registros y actualizar los que existen.
Y necesito saber si se puede en una sola instruccion en Sql Server 2005 y
en un Store Procedure.
Tengo esta tabla en la Base de Datos
TablaClientes
Identificacion (clave única)
Nombres
Apellidos
Direccion
Ciudad
Y otra
Tengo esta tabla TablaTemporal, con registros de un punto de venta para
actualizar los registros
Identificacion
Nombres
Apellidos
Direccion
Ciudad
Pero no se como hacer para Insertar los registros que no existen y
actualizar los que están en la tabla TablaClientes dese la tabla
TablaTemporal.
Gracias por su ayuda.
Atentamente,
Aventurero
Aventurero
2009-10-12 18:36:57 UTC
Permalink
Muchas gracias MAXI.

En este momento no puedo probarlo, pero es lo que necesito exactamente.

Atentamente,


Aventurero
Maxi Accotto
2009-10-12 19:44:06 UTC
Permalink
Me alegro, en mi blog (http://blog.maxiaccotto.com) estare publicando un
ejemplo de merge vs old sentence
Post by Aventurero
Muchas gracias MAXI.
En este momento no puedo probarlo, pero es lo que necesito exactamente.
Atentamente,
Aventurero
Aventurero
2009-10-13 01:06:03 UTC
Permalink
Ya revisé el Blog y me parece fabuloso. Gracias por el dato.

Una pregunta más, que pasa si CustId de la Tabla CustomersStage está más de
una vez en el momento de insertar?

Gracias de nuevo.

Atentamente,


Aventurero
Maxi Accotto
2009-10-13 22:57:20 UTC
Permalink
Hola, y ojo con eso, si esta mas de una vez es porque esa no es la PK y tu
no deberias tener tablas sin PK :)
Post by Aventurero
Ya revisé el Blog y me parece fabuloso. Gracias por el dato.
Una pregunta más, que pasa si CustId de la Tabla CustomersStage está más
de una vez en el momento de insertar?
Gracias de nuevo.
Atentamente,
Aventurero
Aventurero
2009-10-16 23:30:42 UTC
Permalink
Gracias de nuevo.
Lo que pasa es que pueden ser varias transacciones para un cliente y es
posible que el cliente no exista en la Tabla en la BD.

Acudí a una solución dada en el foro, si no estoy mal por Usted mismo donde
se dejan registros únicos para el campo identificación únicos en la Tabla de
BD.

Atentamente,


Aventurero
Maxi Accotto
2009-10-17 13:09:13 UTC
Permalink
Bueno esa es una forma de tener una PK :)
--
------------------------------------------------
Maxi Accotto
MVP en SQL Server
http://blog.maxiaccotto.com
--------------------------------------------------
Post by Aventurero
Gracias de nuevo.
Lo que pasa es que pueden ser varias transacciones para un cliente y es
posible que el cliente no exista en la Tabla en la BD.
Acudí a una solución dada en el foro, si no estoy mal por Usted mismo
donde se dejan registros únicos para el campo identificación únicos en la
Tabla de BD.
Atentamente,
Aventurero
Loading...