PDA

Ver la Versión Completa : informacion de columna clave insuficiente


vipernet
07-09-2006, 14:42:07
Buenas a todos, les paso a comentar, tengo una tabla, la cual cree sin clave primaria ni nada por el estilo, ya que era una tabla donde los datos jamas se ivan a actulizar y solamente se ivan a ir agregando datos, pero ahora cambio, y tengo que poder dar la opcion de modificarle algunos campos, y el problema salto cuando quise aplicar esta opcion, me saltaba error de falta de columna clave, estuve mirando en los foros por varios dias y la unica opcion para arreglar este problema es agregandole un campo clave. Ahora, es posible agregar un campo clave a una tabla sin perder todos los datos ya cargados, yo cree un campo comun que acepta nulos, pero cuando genero el script para que le vaya agregandole su numero al campo clave de cada fila, en la fila 10 me salta el error de "informacion de columna clave insuficiente o incorrecta, demasiadas filas afectadas por la actualizacion", en sintesis, ahi alguna forma de agregar un campo darle los valores numericos y despues transformar este campo en clave primaria????


Creo que me mande una cagada.... igual ya aprendi.:)

ContraVeneno
07-09-2006, 16:20:15
Pues en teoría si se puede, si lo que quieres es agregar un campo nuevo y darle los valores únicos a cada uno y luego convertirlo en campo llave, pues si, si se puede.

El problema estaría en que quisieras que ese campo llave fuera único y ya existieran registros; en ese caso tendrías que eliminar primero los duplicados para despues poder aplicar la llave.

vipernet
07-09-2006, 16:33:16
Gracias por la respuesta rapida contraveneno, te comento que en efecto si, lo que quiero hacer hacer del campo es que sea unico, pero primero tengo el problema de que creo el campo, no lo pongo como clave primaria, sino como un campo normal, pero al ir agregandole los numeros, 1, 2, 3, 4.. cuando llega a 10 me sale el maldito cartel de " clave insuficiente o erronea" y para mi es un misterio, es un campo normal, acepta nulos y valores duplicados(por ahora) pero no me deja agregarle valores arriba del numero 9..., nose ya que hacer, tendre que eliminar la tabla, volverla a crear e importarle los datos????

ContraVeneno
07-09-2006, 16:34:44
¿que tipo de dato es ese campo?

edgusano
07-09-2006, 18:03:06
Que instruccion utilizastes para agregar el campo?

__hector
07-09-2006, 19:57:14
El problema existe porque, como no existen campos unicos,la fila que intentas modificar puede estar repetida, por lo que el motor de base de datos no tiene un mecanismo real para identificar una fila de otra.

Yo te recomendaria a~adir una columna de tipo entero al final de la tabla, y ponerla como autoincremento. Inmediatamente guardes los cambios, se asignaran los valores a la nueva columna, y asi podran ser discriminadas unas de otras cuando intentes hacer alguna operacion de borrado o edicion.

Otra alternativa es usar una columna de tipo uniqueidentifier, y un default value de newid(), pero al final te funcionara de cualquiera de las dos formas.

ContraVeneno
07-09-2006, 20:26:40
exacto, por eso pregunté que tipo de campo era... si es de cualquier otro tipo que no sea autonumérico o uniqueidentifier, pues habría que poner uno de esos dos. :D