¿Cómo puedo crear una secuencia en MySQL?
Estoy intentando crear una secuencia en MySQL (soy muy nuevo en SQL). I'm utilizando el siguiente código, pero causa un error:
CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;
ORDID hace referencia a un campo de una tabla que estoy utilizando. ¿Cómo puedo crear la secuencia correctamente?
Editar:
Supuestamente, MySQL no utiliza secuencias. Ahora estoy usando el siguiente código, pero esto está causando errores también. ¿Cómo los arreglo?
CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code
Editar:
Creo que he encontrado una solución. Para phpMyAdmin (que estaba usando) puede utilizar el siguiente código.
ALTER TABLE ORD AUTO_INCREMENT = 622;
No tengo ni idea de por qué prefiere esto, pero si alguien más necesita ayuda con esto, aquí tienes :)
21
3
Esta es una solución sugerida por el manual de MySQl:
Si expr se da como argumento a LAST_INSERT_ID(), el valor del argumento
Consulta este artículo. Creo que debería ayudarte a conseguir lo que quieres. Si tu tabla ya existe, y ya tiene datos en ella, el error que estás obteniendo puede deberse a que el auto_incremento intenta asignar un valor que ya existe para otros registros.
En resumen, como otros ya han mencionado en los comentarios, las secuencias, tal y como se conciben y manejan en Oracle, no existen en MySQL. Sin embargo, es probable que pueda utilizar auto_increment para lograr lo que desea.
Sin detalles adicionales sobre el error específico, es difícil proporcionar una ayuda más específica.
ACTUALIZACIÓN
Este enlace también es útil para describir el uso de auto_increment. Establecer el valor de AUTO_INCREMENT parece ser una opción de la tabla, y no algo que se especifica como un atributo de la columna específicamente.
Además, según uno de los enlaces anteriores, puedes establecer el valor de inicio de auto_incrementación a través de una alteración de la tabla.
ACTUALIZACIÓN 2 Aquí hay un enlace a un ejemplo de sqlfiddle, utilizando el auto incremento.
Espero que esta información ayude.
Al crear la tabla de incremento debe tener en cuenta que no debe eliminar las filas insertadas. La razón de esto es evitar el almacenamiento de grandes datos tontos en la base de datos con ID-s en ella. De lo contrario, en caso de reinicio de mysql se obtendría la máxima fila existente y continuaría el incremento desde ese punto como se menciona en la documentación http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html