Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: .:UND3R:. en 15 Febrero 2012, 22:30 PM

Título: Incrementar datos de una columna
Publicado por: .:UND3R:. en 15 Febrero 2012, 22:30 PM
Hola a todos bueno tengo las siguientes columnas:

|ID|nombre|
1     juan
2     esteban
3     alfonso
4     felipe

como podría hacer para que ID aumente de +1 cada vez que se introduscan datos en una fila es decir que si introduzco un nombre después de felipe ID quede con 5?, Muchas gracias Saludos
Título: Re: Incrementar datos de una columna
Publicado por: HdM en 15 Febrero 2012, 22:42 PM
Buenas.

Puedes hacerlo utilizando un campo de autoincremento.

De todos modos, yo de ti, si ese campo va a actuar como clave de la tabla (que parece ser que si), lo crearía de tipo entero y calcularía su valor con el alta de un nuevo registro (de este modo siempre vas a tener un mayor control). De hecho si tu bd tiene más tablas en las que la clave va a ser de este tipo, te puedes crear una función a la que le pases como parámetro el nombre de la tabla y te devuelva el valor que tienes que asignar al campo en la operación de nuevo registro.

Saludos.
Título: Re: Incrementar datos de una columna
Publicado por: Shell Root en 16 Febrero 2012, 04:10 AM
Como lo dijeron, podrías hacerlo automaticamente mediante el uso de AUTO_INCREMENT dentro del campo, ejemplo:
Código (sql,2) [Seleccionar]
CREATE TABLE PoC(
  id int(4) auto_increment primary key
  nombre varchar(30) not null,
  apellido varchar(30) not null
);


O con el uso de la función COUNT() de MySQL, así:
Código (sql) [Seleccionar]
SELECT count(id) FROM PoC;
Título: Re: Incrementar datos de una columna
Publicado por: .:UND3R:. en 16 Febrero 2012, 04:23 AM
Muchas gracias por sus respuestas, me han sido de mucha ayuda. Saludos


PD: Solucionado
Título: Re: Incrementar datos de una columna
Publicado por: HdM en 16 Febrero 2012, 09:42 AM
Buenas.

Más que usar COUNT(), utilizaría MAX()+1. Se evitarán errores y problemas de duplicidad.

Saludos.