FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Informacion de columna clave insuficiente para realizar la operacion update o refresh
Hola amigos, este es el error que me salta al hacer una actualización de una tupla y sus tuplas relacionadas en otras tablas en mis BBDD.
Informacion de columna clave insuficiente para realizar la operacion update o refresh He leido que puede ser producido por no tener bien realizada la relación entre tablas, pero en mi caso si lo tengo bien relacionado, ya que la tabla principal goza de C.Principal y la tabla esclava con su clave ajena y principal, y es como se relacionan mediante el INNER JOIN. Pongo el ejemplo:
No he encontrado por el momento el bug de la cuestión, pero si alguien mientras lo busco me puede aportar luz, se lo agradecería. Trabajo con componentes ADO y SQL Server. Gracias
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#2
|
||||
|
||||
¿Estás intentando hacer un UPDATE sobre el resultado de esa consulta?
Si es así, el problema es que esa consulta tiene varias tablas relacionadas y el Gestor no sabe qué debe actualizar...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Necesitas un primary key, o alguna columna que identifique de forma unica el registro en cada tabla. Ese error se produce cuando hay dos filas identicas, y el sql server no sabe, con el updatecommand, cual fila actualizar.
Tambien tiene que ver cuando haces joins entre tablas, y el resultado no puede ser actualizable.
__________________
Héctor Geraldino Software Engineer |
#4
|
||||
|
||||
Gracias a los dos. No he contestado antes porque estaba de días libres en la oficina.
En el primer caso "Neftalí" : Cita:
Y no es expresamente un UPDATE lo que intento si no un UpdateBatch(), aunque internamente supongo que será lo mismo. En el segundo caso "hector" Después de comprobar como veo en la contestación de Neftalí, que tengo las claves de todas la tablas relacionadas, me quedo por saber : Cita:
Yo no les he incluido ninguna restricción, Sigo investigando y buscando la solución.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. Última edición por Cabanyaler fecha: 17-04-2007 a las 10:59:53. |
#5
|
|||
|
|||
Buenas.
Explico mi experiencia que tiene algo que ver con esto. En SQLServer 7.0, para que te deje actualizar una tabla desde una vista (consulta pura y dura), dicha vista tiene que ser limpita sobre la tabla .Sin joins ni unions ni leches. Que yo sepa el bayarri de SQLServer no deja actualizar tablas desde vistas con más de una tabla. Y me da ese error precisamente.
__________________
_____________________________________ And follow me to where the real fun is |
#6
|
||||
|
||||
En referencia a Nelet:
Aleshores, ¿que fem? ¿Entonces que hacemos? Precisamente el error me aparece desde que incluí los campos que deseaba obtener de la segunda tabla en la misma consulta, es decir cuando cambié :
Por esto otro que incluye campos de la tabla cliente en el SELECT
y el motivo de esta inclusión es por desear ordenar la consulta por campos de la tabla relacionada "Clientes", ya que si no los incluyo en el SELECT, la actualización funciona o funcionaba bien. No obstante sigo investigando hasta que no dé con la solución.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#7
|
||||
|
||||
Cita:
Si estás haciendo update sobre campos de dos tablas, genera los dos UPDATES por separado. No se me ocurre otra cosa...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#8
|
||||
|
||||
Pues si es algo que se me había ocurrido, pero lo veía como "una escapada por el camino del medio", pero seré en este caso "maquiabélico".
Un curro, pq tengo un montón de consultas parecidas y además con varias tablas relacionadas. Aplicaré la madre de todas las ciencias...... La Paciencia... Gracias.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#9
|
|||
|
|||
Cita:
Estoy de acuerdo con Neftali. Un UPDATE para cada tabla. Primero la maestra y después un UPDATE masivo en la/las hija/as.
__________________
_____________________________________ And follow me to where the real fun is |
#10
|
||||
|
||||
... en fin Pilarín....., después de mucho tiempo desde el último Post y mucho curro al márgen de la programación de la aplicación, he de decir que en realidad hoy he acabado esta parte y he decir que:
He necesitado en efecto crear un UPDATE para cada una de las tablas que estaban en la relación de la consulta.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#11
|
|||
|
|||
Hola, me pasa algo parecido....
Un abraso al Foro.
Necesito que miren este censillo código:
Evidentemente con esto quiero cambiar algunos valores del registro con chapa = edit1.text pero me surge el error ese del que hablamos... Cogí, y sustituí el Refresh por el FindNext, con el propósito de que cuando se moviera en cursor dentro de la tabla la fila que modifiqué se actualizara....y me funcionó. Pero no es esa la solución que busco porque en otras partes de mi código ... no me cuadra. como dice Cabanyaler, si alguien mientras lo busco me puede aportar luz, se lo agradecería.Trabajo con componentes ADO y SQL Server. Última edición por Roilo fecha: 17-05-2007 a las 22:30:18. |
#12
|
|||
|
|||
Bueno, no sé si os valdrá de mucho pero yo lo he resuelto del siguiente modo:
En el Administrador corporativo de SQL2000, puse 'Establecer clave principal' en la clave unica (en mi caso ID_ALARMA_MEDIO' de la tabla relacionada y funcionó. El caso es que desde una ADOQuery que hacia una consulta con INNER JOIN de tres tablas no puse la clave princial de la tabla varios-a-varios en el adm. corporativo y me daba el fallo. Una vez puesto el ADOQuery funciona correctamente. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Espacio de almacenamiento insuficiente para completar esta operación | Aldo | OOP | 1 | 13-02-2007 14:57:08 |
informacion de columna clave insuficiente | vipernet | MS SQL Server | 6 | 07-09-2006 20:26:40 |
Espacio insuficiente para completar la operación | aig | .NET | 3 | 06-10-2004 13:25:47 |
superADO en busca del Espacio insuficiente para completar la operación | aig | Conexión con bases de datos | 4 | 01-10-2004 18:03:02 |
Insuficiente memoria para esta operacion, Alias:dbSPI | orfeo | Conexión con bases de datos | 3 | 17-02-2004 03:25:32 |
|