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

Usar campo auto increment

Estas en el tema de Usar campo auto increment en el foro de Bases de Datos General en Foros del Web. hola, estoy intentando usar el campo auto increment para un valor dentro de una tabla pero me da el siguiente error: ERROR 1075 (42000): Incorrect ...
  #1 (permalink)  
Antiguo 29/11/2015, 12:58
 
Fecha de Ingreso: noviembre-2007
Mensajes: 208
Antigüedad: 17 años
Puntos: 2
Usar campo auto increment

hola, estoy intentando usar el campo auto increment para un valor dentro de una tabla pero me da el siguiente error:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

La cosa es que no quiero definirla como primary key, os pongo un ejemplo:

Tabla Ventas
calle
numero
planta
letra
nventa auto_increment

calle, numero, planta y letra las tengo marcadas como clave primaria para que no se pueda introducir una vivienda dos veces, por ejemplo la casa en calle madrid, numero 3, planta 2 letra A.
Ahora bien si pongo nventa tambien como clave esta restriccion me desapareceria y se podria cometer el error de introducir una misma vivienda varias veces, entonces lo que quiero es simplemente tener un campo auto incremente para saber el numero de ventas que llevo. sabeis de que forma puedo lograrlo sin tener que ponerlo como clave primaria?

muchas gracias y un saludo de antemano!
  #2 (permalink)  
Antiguo 29/11/2015, 13:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Usar campo auto increment

Cita:
Ahora bien si pongo nventa tambien como clave esta restriccion me desapareceria
Ok... ¿Y en qué contexto mágico desaparecería por si misma esa clave?

Una PK sólo puede "desaparecer" si la quietas manualmente y en forma explícita. NO puede "desaparecer".

Las reglas de MySQL dicen que sólo puede haber un único campo AI en una tabla, compuesto por un único campo, y si existe debe ser parte de la PK o declarado como tal.
Como tu tabla ya posee una PK, no te permitirá agregar ese AI a menos que lo integres a la PK, lo que sería una pésima idea.

En tu contexto, no tiene sentido ni utilidad agregar el AI, a menos que quites la PK actual y generes el AI declarándolo PK. Pero el problema en ese caso es que seguiría pudiéndose duplicar un registro.
La solución es simple: SI cada propiedad siempre tendrá esos campos, y tu NO eliminas esa PK, dejalo todo como está.
Si deseas poner el AI (solución por vagancia de correcto uso de las PK), deberás proteger la unicidad de los registros creando un indice UNIQUE con los mismos campos que hoy tienes como PK... lo que terminaría resultando en mantener dos claves unicas diferentes en la misma tabla... Algo completamente innecesario.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: auto, campo, increment, tabla, usar
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 09:42.