Ver Mensaje Individual
  #12 (permalink)  
Antiguo 29/06/2010, 16:36
Quicky
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con un Cursor

Hola amigo dvp28:

efectivamente asi es como tengo el codigo, tal cual tu lo colocas :

Cita:
UPDATE personas_antiguas
SET nombre=nombre
,edad=edad

FROM personas_antiguas A
INNER JOIN personas_nuevas N ON A.cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))

INSERT INTO personas_antiguas ([id_cod],[verif],[nombre],[edad])
SELECT CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
,SUBSTRING(N.cod,CHARINDEX('-', N.cod)+1,LEN(N.cod))
,N.nombre
,N.edad
FROM personas_nuevas N
WHERE NOT EXISTS(
SELECT 1 FROM personas_antiguas A WHERE A.id_cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod))))
Lo que me haz dejado intrigado tu, es que flaviovich en el ultimo SELECT coloca:

Cita:
SELECT 1 FROM personas_antiguas
Y tu colocas:

Cita:
SELECT 1,2 FROM personas_antiguas
Para que es esto??

Ahora bien, tal cual esta ese codigo, la query no hace nada, pero si coloco la ruta completa de la Base y las tablas, solo me ejecuta el UPDATE.

el codigo es asi:

Cita:
UPDATE [Movimiento_Personas].[dbo].[personas_antiguas]
SET nombre=nombre
,edad=edad

FROM [Movimiento_Personas].[dbo].[personas_antiguas] A
INNER JOIN [Movimiento_Personas].[dbo].[personas_nuevas] N ON A.cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))

INSERT INTO [Movimiento_Personas].[dbo].[personas_antiguas] ([id_cod],[verif],[nombre],[edad])
SELECT CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
,SUBSTRING(N.cod,CHARINDEX('-', N.cod)+1,LEN(N.cod))
,N.nombre
,N.edad
FROM [Movimiento_Personas].[dbo].[personas_nuevas] N
WHERE NOT EXISTS(
SELECT 1 FROM [Movimiento_Personas].[dbo].[personas_antiguas] A WHERE A.id_cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod))))
Este codigo como les mencionaba, me ejecuta el UPDATE, pero no asi el INSERT, mencionandome el error que les comentaba en el mensaje anterior:

Cita:
Violation of PRIMARY KEY constraint 'PK_personas_antiguas_1'. Cannot insert duplicate key in object 'dbo.personas_antiguas'.
gracias de antemano y estare atento a sus comentarios