Informix - Error en insert select

 
Vista:

Error en insert select

Publicado por Daniel (4 intervenciones) el 04/01/2006 12:54:06
Hola, estamos trabajando con la versión 10 de informix y nos está dando error de claves duplicadas en un insert tal que este

INSERT INTO TABLA
SELECT 2006, COLUMNA1, COLUMNA2, .., COLUMNAN
FROM TABLA
WHERE COLUMNA0=2005;

es decir estamos insertando las mismas filas pero con COLUMNA0 con el valor 2006 (típico cambio de año).
Probando la select por separado no salen filas iguales (como es lógico) pero al ejecutar la sentencia aparece el error de claves duplicadas.
¿sabe alguien porqué pasa esto?

muchas gracias y un saludo,
Daniel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en insert select

Publicado por Manu (69 intervenciones) el 04/01/2006 14:33:26
Si sale duplicado es porque existen 2 registros con la misma clave que la de la tabla TABLA . No tienen por qué ser 2 registros idénticos, pero sí la clave de ambos 2 registros.

Quizás ya existe algún registro para COLUMNA0=2006 en la tabla TABLA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en insert select

Publicado por Daniel (4 intervenciones) el 05/01/2006 14:36:15
Eso ya lo he comprobado. Para 2006 no tenemos entradas y de 2005 obviamente no hay repetidas. El tema es que si lo haces con un cursor en 4GL lo hace perfectamente pero con el insert select no. :'(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en insert select

Publicado por Manu (69 intervenciones) el 05/01/2006 15:04:32
Otra opcion es la siguiente:
cargas en una temporal todos los datos de TABLA:
select * from TABLA into temp ZZZ;

Haces el insert select desde ZZZ:
insert into TABLA
select 2006, RESTODECAMPOS from ZZZ
where año = 2005;

así no puede fallar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en insert select

Publicado por Luis Rivaldo (126 intervenciones) el 06/01/2006 13:29:39
Estoy de acuerdo con manu, es mejor una tabla temporal donde tu puedes definir los indices y llaves de la tabla, si lo haces de la forma como lo vienes trabjando el mismo informix genera automaticamente los indices y llaves que muy probable son los que te generan el error.

Tu sabes cuales con los campos que hacen parte de tu llave unica
campo1, campo2, campo3 , ....etc el motor de informix no lo sabe .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en insert select

Publicado por Daniel (4 intervenciones) el 09/01/2006 18:11:40
Muchas gracias a todos. El problema no es la forma de hacerlo pues existen varias. Mi problema es que en el código de varias aplicaciones se actualizan los cambios de año con un insert select. Teníamos instalada la versión 9 de informix y no se había producido ningún problema pero al pasar a la 10 nos hemos encontrado con esto. Estoy a la espera de que la gente de IBM nos de una explicación pero por si alguien se había encontrado con esto... Tiene pinta de ser algo de la configuración pero no logro averiguar qué.

un saludo,
daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en insert select

Publicado por Manu (69 intervenciones) el 10/01/2006 11:18:57
Creo que una vez a mi me paso algo parecido.

El problema creo que fue que al cambiar de versión había que "reindexar" las BBDDs y no se hizo. Esto provocó errores por duplicados en tablas que estaban correctamente definidas. No sé si puede ser tu caso, además no soy administrador de Informix, pero quizas te pueda servir como ayuda o por aportar ideas...

En mi caso creo que alguien me contó esto y efectivamente tuvieron que hacer algo en Sistemas con las BBDDs al cambiar de versión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar