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

Amigos del foro, les pido mil, pero mil disculpas, de tanto tratar de buscar una solucion, acabo de darme cuenta, del porque me aparece el error mencionado:

Cita:
Violation of PRIMARY KEY constraint 'PK_personas_antiguas_1'. Cannot insert duplicate key in object 'dbo.personas_antiguas'.
y es que se me olvido explicar algo que obvie.

la tabla "personas_nuevas" viene en algunos casos con el campo "cod" repetido; entonces, si un registro en la tabla "personas_nuevas" no existe en la tabla "personas_antiguas", se debe insertar en esta ultima, si se repitiese el mismo registro en la tabla "personas nuevas" el o los siguientes registros debiesen ser obviados (por eso es que no me dejaba pasar mas de uno, por ser PK) trate de hacerlo anidado con un DISTINCT pero solo me retorna el campo solicitado como "distinto"no asi el registro completo. De verdad se me cae la cara de verguenza por no explicar eso desde un principio. como me di cuenta? le saque la PK al campo id_cod de la tabla "personas_antiguas" y al ejecutar la query, pasaron todos los registros, incluidos los repetidos. Dandome cuenta que la query de insercion esta bien

el codigo quedo asi:

Cita:
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 A.id_cod FROM [Movimiento_Personas].[dbo].[personas_antiguas] A WHERE A.id_cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod))))
como podria hacerlo, para no pasar los repetidos de la tabla "personas_nuevas"???

muchas gracias de antemano y estare atento a su ayuda, comentarios y sugerencias.

Saludos a todos