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

crear sequencia

Estas en el tema de crear sequencia en el foro de Mysql en Foros del Web. Buenas, estoy intentando realizar una tabla en la cual tengo un cod_cliente el cual quiero que se incremente cada vez que un cliente nuevo se ...
  #1 (permalink)  
Antiguo 30/10/2011, 06:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
crear sequencia

Buenas, estoy intentando realizar una tabla en la cual tengo un cod_cliente el cual quiero que se incremente cada vez que un cliente nuevo se registra en una web... bueno me he puesto manos a la obra y he realizado el siguiente código
Código MySQL:
Ver original
  1. CREATE SEQUENCE incremento_cod_cliente START WITH 0 INCREMENT BY 1 NOCYCLE;

el cual no me reconoce, lo cierto es que lo he echo basándome en oracle que es lo que estudio pero no encuentro el código alternativo para mysql

Gracias :)
  #2 (permalink)  
Antiguo 30/10/2011, 06:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: crear sequencia

Los DBMS e agregan al estandar SQL montones de cosas que no pertenecen a él y por tanto no son reconocidas por los diferentes motores. Las secuencias de Oracle son un caso: No existen en MySQL, y dentro de MySQL no hay nada que sea exactamente igual.
En el caso de MySQL lo que existen son las columnas numéricas enteras a las que se les agregó la cláusula AUTO_INCREMENT al momento de crear la tabla.
Los auto_increment tienen algunas características:
1) Son siempre incrementales sobre la base del valor de una variable de servidor que no se puede modificar dinámicamente.
2) Sólo producen números positivos.
3) No se pueden invocar para tomarlos como valores asignables a otras cosas.
4) Sólo tienen efecto sobre su propia tabla.
5) Su rango máximo no es definible programáticamente, sino que depende del rango máximo del tipo de columna definido. Por ello hay que tener cuidado al elegir el tipo de columna para no quedarse corto.
6) Como sólo produce positivos, si eliges un tipo de columna con signo, desperdicias la mitad del rango, porque no se producirán.

El tema de los auto_increment tiene sus propio capítulo en el Manual de Referencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/10/2011, 11:46
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: crear sequencia

Ok, gracias por la respuesta ahora me surge otra duda, en oracle, cuando quiero introducir una secuencia a un registro hago
Código MySQL:
Ver original
  1. INSERT INTO nombre_tabla (id, nombre) VALUES (secuencia_creada.NEXTVAL, 'jose');

¿Aquí ahora como le indico para que me haga el mismo resultado que la sentencia anterior en oracle?
  #4 (permalink)  
Antiguo 30/10/2011, 13:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: crear sequencia

Código MySQL:
Ver original
  1. INSERT INTO nombre_tabla (nombre) VALUES ('jose');
El auto_increment es administrado por MySQL en forma automática. Simplemente omites el campo y MySQL lo incorporará por si mismo (sólo funciona con AUTO_INCREMENT).
A diferencia de una secuencia en Oracle, el auto_increment no es un objeto independiente. Es una propiedad asignada a una columna de una tabla y por tanto no puede ser ni compartida; tampoco puede ser modificada sin modificar la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 30/10/2011 a las 15:05

Etiquetas: sql, tabla
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 17:01.