Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/11/2012, 14:58
pekation
 
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duplicar campos de tabla

@GeriReshef:

interesante tu respuesta estimado, sin embargo el codigo da error ya que "Row_Number() Over(ORDER BY cont_rv_c_iid)+Mx" intenta insertar en un campo identity (el excesivo uso de identitys es el que genera dicho problema, pero no desean cambiar los tipo, así que debo solucionarlo como sea).

En mi caso he encontrado una solución, no correcta ni eficiente, pero por lo menos me soluciona el problema temporalmente.

Copio las llaves que se generan en una tabla temporal en la cual guardo tanto la antigua como la nueva, realizo la inserción y luego un update, esto hasta el momento me ha solucionado el problema así:

INSERT INTO T_CONT_RV
SELECT
cont_vig_c_iid,
cont_ex_c_iid,
cont_rv_c_eporc_x_rf,
cont_rv_c_ctipo,
cont_c_icod,
cont_c_yver,
cont_c_ymod+1
FROM T_CONT_RV
WHERE cont_c_icod=@cont_c_icod AND
cont_c_yver=@cont_c_yver AND
cont_c_ymod=@cont_c_ymod
END

y luego:

UPDATE T_CONT_RV
SET cont_vig_c_iid= T.cont_vig_c_iid2
FROM T_CONT_VIG_TEMP T, T_CONT_RV RV
WHERE T.cont_vig_c_iid=RV.cont_vig_c_iid AND
RV.cont_c_icod=@cont_c_icod AND RV.cont_c_ymod=@cont_c_ymod+1 AND RV.cont_c_yver=@cont_c_yver

De este modo lo he logrado ah y la estructura de la tabla temp es solo 2 campos int sin relaciones.

Saludos.