Estoy tratando de crear una secuencia en MySQL (yo soy muy nuevo en SQL como un todo). Estoy usando el siguiente código, pero se produce un error:

CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;

ORDID se refiere a un campo en una tabla que estoy usando. ¿Cómo puedo crear la secuencia correctamente?

Edición:

Supuestamente, MySQL no utilizar secuencias. Ahora estoy usando el siguiente código, pero esto está provocando errores también. ¿Cómo puedo solucionarlo?

CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code

Edición:

Yo creo que he encontrado una solución. Para phpMyAdmin (que yo estaba usando) usted puede utilizar el código siguiente.

ALTER TABLE ORD AUTO_INCREMENT = 622;

Tengo ni idea de por qué se prefiere este, pero si alguien necesita ayuda con esta aquí la tienes. 🙂

No hay tal cosa en MySQL. ¿Qué estás tratando de hacer?
En MySQL, se utiliza una columna con el AUTO_INCREMENT atributo.
MySQL no soporta secuencias de
La adición de «AUTO_INCREMENT» a la ORDID campo sólo causó otro error. Hay un «INCREMENTO» de la función, sin embargo. Tendría que trabajar?
«causó otro error» – – – ¿no proporcionan el mensaje con un propósito?

OriginalEl autor Ben | 2014-10-26

4 Comentarios

  1. 20

    Retirar este artículo. Creo que debería ayudarle a obtener lo que quieren. Si la tabla ya existe, y tiene datos en el ya, el error que usted está recibiendo puede ser debido a la auto_increment intentando asignar un valor que ya existe para otros registros.

    En definitiva, como otros ya han mencionado en los comentarios, secuencias, ya que son considerados y manejados 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 asistencia más específica.

    ACTUALIZACIÓN

    CREATE TABLE ORD (
      ORDID INT NOT NULL AUTO_INCREMENT,
      //Rest of table code
      PRIMARY KEY (ordid)
    )
    AUTO_INCREMENT = 622;

    En este enlace también es útil para describir el uso de auto_increment.
    Ajuste el valor AUTO_INCREMENT parece ser un la opción de la tabla, y no algo que se especifica como un atributo de columna específicamente.

    También, por uno de los enlaces de arriba, se puede establecer también el auto de incremento de valor de inicio a través de un alter a su mesa.

    ALTER TABLE ORD AUTO_INCREMENT = 622;

    ACTUALIZACIÓN 2
    Aquí hay un enlace a un trabajo sqlfiddle ejemplo, el uso de incremento automático.

    Espero que esta información le ayuda.

    Gracias por la ayuda, pero ahora MySQL afirma que este código contiene una «Incorrecta especificador de columna».
    Estoy usando una gran secuencia de código para crear las tablas de cero cada vez (si algo va mal puedo borrar las tablas y empezar de nuevo). MySQL nunca tuve un problema con «numeric(4)» antes.
    Caso omiso de mi anterior comentario. Lo he borrado, como es incorrecta.
    Poco más de información: estoy usando los servidores MySQL en «phpMyAdmin». No sé si esto ayuda, pero me siento como que es tener un problema con el AUTO_INCREMENT comando.
    Hay otro enlace aquí en el Desbordamiento de Pila que se analiza el uso de AUTO_INCREMENT en phpMyAdmin aquí: stackoverflow.com/questions/5665571/…

    OriginalEl autor Daileyo

  2. 24

    Esta es una solución sugerido por el manual de MySQl:

    Si expr es dada como argumento para LAST_INSERT_ID(), el valor de la
    el argumento es devuelto por la función y es recordado como el siguiente
    el valor devuelto por LAST_INSERT_ID(). Esto puede ser usado para simular
    secuencias:

    Crear una tabla que contenga la secuencia del contador y se inicializa:

        mysql> CREATE TABLE sequence (id INT NOT NULL);
        mysql> INSERT INTO sequence VALUES (0);

    Utilice la tabla para generar los números de secuencia como esta:

        mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
        mysql> SELECT LAST_INSERT_ID();

    La ACTUALIZACIÓN de la declaración de los incrementos de la secuencia del contador y hace que la siguiente llamada a LAST_INSERT_ID() para devolver el valor actualizado. El
    Instrucción SELECT recupera ese valor. El mysql_insert_id() de la API en C
    la función también puede utilizarse para obtener el valor. Consulte La Sección 23.8.7.37,
    «mysql_insert_id()».

    Puede generar secuencias sin llamar LAST_INSERT_ID(), pero la
    utilidad del uso de la función de esta forma es que el valor de ID es
    mantiene en el servidor como el último valor generado automáticamente. Es
    es multi-usuario de seguros debido a que varios clientes pueden emitir la ACTUALIZACIÓN
    instrucción y de obtener su propia secuencia de valor con la instrucción SELECT
    (o mysql_insert_id()), sin afectar o verse afectado por otros
    los clientes que generan sus propios valores de la secuencia.

    OriginalEl autor pupitetris

  3. 2

    Por la creación de la tabla incremento usted debe ser consciente de no eliminar filas insertadas. la razón de esto es para evitar el almacenamiento de grandes tonto de datos en la base de datos con ID-s en ella. De lo contrario, en el caso de mysql restart sería max fila existente y continuar incremento a partir de ese punto como se ha mencionado en la documentación http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

    OriginalEl autor Dato Janez

  4. 0

    Si necesita algo diferente AUTO_INCREMENT usted puede todavía utilizar desencadenadores.

    OriginalEl autor Marek Lisiecki

Dejar respuesta

Please enter your comment!
Please enter your name here