Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

demasiadas filas afectadas por la actualización?!?!

Estas en el tema de demasiadas filas afectadas por la actualización?!?! en el foro de Bases de Datos General en Foros del Web. Trabajo con SQL Server 2000 sp3 Tengo una tabla con un campo clave (no admite claves duplicadas) Realizo un select a la tabla de la ...
  #1 (permalink)  
Antiguo 23/09/2004, 11:33
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
demasiadas filas afectadas por la actualización?!?!

Trabajo con SQL Server 2000 sp3

Tengo una tabla con un campo clave (no admite claves duplicadas)

Realizo un select a la tabla de la forma:

SELECT * FROM tabla WHERE campo_clave='xxxx'

lo que me devuelve una única fila para actualizar algunos campos

Trabajo con VBasic de la forma:

sQRY = "SELECT * FROM tabla WHERE campo_clave='xxxx'"
Set rs = New ADODB.Recordset
rs.Open sQRY, conexionDB, adOpenStatic, adLockPessimistic, adCmdText
rs("un_campo") = Date
rs("campo_de_texto") = "Texto nuevo"
rs.Update
rs.Close
Set rs = Nothing

Muy de tarde en tarde (una vez cada dos meses, por decir algo) se presenta una situación de error que me tiene despistado. Al realizar una de estas actualizaciones se modifican un número aleatorio de registros, que aparecen con el contenido del campo_de_texto que se acaba de introducir.

Hemos detectado que en esta situación, después de realizado el rs.Update, aparece el error:

-2147467259
Información de columna clave insuficiente o incorrecta; demasiadas filas afectadas por la actualización

Dado que el select solo puede devolver un registro ¿por que se modifican varios?
¿Veis alguna causa que pueda provocar una situación así?
¿Alguna idea?
  #2 (permalink)  
Antiguo 24/09/2004, 02:49
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Eso suele pasar porque no tienes una clave primaria definida, y hay duplicados en los datos, es decir tienes filas, que en todos sus campos tienen todos los datos iguales.

Compruébalo, e intenta encontrar la clave primaria de la tabla, si no tuviera, porque así debe ser, crea una artificial, con un autonumérico, o un RowGuid

Un saludo
  #3 (permalink)  
Antiguo 27/09/2004, 06:25
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
Sí tengo un campo de clave, mira la segunda línea (por favor), y ya digo que la tabla 'no admite claves duplicadas'.

¿Nadie más me puede decir algo?

Parece como si el SQL Server se volviera loco y decidiera actualizar una cadena de registros con el contenido del que estoy mandando actualizar.
  #4 (permalink)  
Antiguo 27/09/2004, 09:18
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Perdona por no hacer caso de lo que decías, lo leí, pero al leer la segunda parte del mensaje, y ver el error, se me fue la cabeza a lo típico.

Lo siguiente típico, es, actualizar los índices de la base de datos, utiliza uno de los planes de mantenimiento para que cada cierto tiempo, (yo personalmente, lo tengo puesto una vez por semana) como parte del plan, le pones que reorganice las páginas de índices y datos, a ver si eso te soluciona algo

Un saludo
  #5 (permalink)  
Antiguo 28/09/2004, 09:06
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
Gracias. ¿Alguna idea más?
  #6 (permalink)  
Antiguo 06/10/2004, 04:40
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
¿De verdad que nadie más aporta otra idea?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:04.