Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2006
jabauti jabauti is offline
Registrado
 
Registrado: abr 2006
Posts: 2
Poder: 0
jabauti Va por buen camino
Smile Penalizacion al actualizar campo con indice

Dentro de un método de actualización genérico válido para varias tablas ejecuto una sentencia UPDATE a la que se le pasan todos los valores de los campos de la tabla, aunque algunos valores no cambian respecto al valor que posee la base de datos. Mi pregunta es si existe alguna penalización por incluir en la sentencia un campo que es indice pero que no cambia su valor.
Por ejemplo, tengo una tabla T con campos C1,C2 y C3. Tanto C1 como C2 son campos índice. Actualmente hay un registro con los siguientes valores C1=99 C2="ABC", C3=1.
Si yo ejecuto una sentencia update UPDATE T SET C1=99,C2="ABC",C3=5 WHERE C1=99 en la que no cambian los valores de los campos índice ¿se realizaría una reindexación en la tabla por el hecho de incluirlos en el UPDATE o solo cambiaría el valor de C3 y ya está?
Gracias.
Responder Con Cita
  #2  
Antiguo 25-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
Lo que no entiendo es si los valores de c1 y c2 no cambian por qué quieres incluirlos en la actualización si el unico valor que va a cambier es el de c3. explicate mejor.
Responder Con Cita
  #3  
Antiguo 25-04-2006
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Aparte de lo que dice andres la consulta va a ocasionarte problemas en el caso de que tengas varios registros con el mismo valor en el campo c1, ya que tendrías varios registros con la misma clave primaria.

Edito para decir que me he equivocado, ya que pense que tanto C1 como C2 formaban la clave, pero lo que en realidad pone es que son campos indice
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 26-04-2006 a las 11:25:35. Razón: pequeña confusión por no leer bien
Responder Con Cita
  #4  
Antiguo 25-04-2006
jabauti jabauti is offline
Registrado
 
Registrado: abr 2006
Posts: 2
Poder: 0
jabauti Va por buen camino
La razón por la que intento actualizar campos que no cambian es por que estoy construyendo un motor de persistencia en el que las clases que representan tablas tienen un método 'actualizar' que coge los valores actuales de las propiedades del objeto y construye una sentencia UPDATE apropiada. Entonces en el momento de ejecutar la sentencia no sé qué valores cambian respecto a lo que hay en la base de datos y cuáles no.
Para eso tendría que hacer previamente una consulta a la base de datos y obtener el registro con esa clave primaria y comparar qué campos cambian, lo cual quiero evitar si no es necesario.
Lo que quiero es ver qué me compensa más hacer una consulta previa al registro que quiero actualizar o construir la sentencia UPDATE con todos los campos, cambien o no.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usar campo LookUp como indice en DataSet amadis Conexión con bases de datos 4 17-05-2007 04:01:57
como actualizar un solo campo de una BD Nelly Conexión con bases de datos 2 06-12-2005 23:58:31
Case extraño al actualizar un campo. Kashmir Firebird e Interbase 3 06-11-2005 14:18:25
Actualizar un campo micayael Firebird e Interbase 2 28-10-2005 21:42:14
Actualizar campo calculado de DBGrid Agar23 Varios 3 12-11-2003 08:27:36


La franja horaria es GMT +2. Ahora son las 12:47:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi