Estoy tratando de hacer una columna de una base de datos mysql que auto aumenta de uno en uno, sino que va de 0-Z y, a continuación, los rollos.

Por ejemplo
000, 001, 002, …, 009, 00A, 00B, …, 00Z, 010, …, 0ZZ, …, 100.

Me gustaría tener el crear base de datos de la columna a través de un campo de incremento automático.

Las ideas que tengo son:

  1. Crear una columna para cada personaje que va de 0-36, luego de incremento automático de la fila N (donde N es el dígito menos significativo) por 1. A continuación, agregue un disparo en cada columna para añadir 1 a la columna N-1 cuando N de la columna alcanza 36.
  2. Crear una tabla con 36 filas donde cada fila contiene un carácter 0-Z y tire el carácter apropiado de la tabla con similares llevar la lógica de la anterior
  3. Crear un procedimiento almacenado para hacer la correspondiente lógica desde el punto 1
  4. Tiene el programa de generar un valor y se inserta en la tabla de
  5. tienen un regular de auto incremento de valor y calcular el siguiente valor de la secuencia (esta es la menos óptima ya que la hace difícil de analizar por una persona que sólo busca en la base de datos)

Tenía la esperanza de que había algo elegante que permitiría, esta construido en un mecanismo para hacer esto que yo no sé. Yo no tengo ningún conocimiento en procedimientos almacenados /desencadenadores para ayuda sería muy apreciada. Creo que la manera más fácil sería tener una tabla de consulta para los personajes y cuando la fila 36 se alcanza se restablece a 0 y, a continuación, hay un llevar a la fila N-1.

  • Son también los que deseen utilizar esta columna como Clave Principal?
  • Me gustaría pero no es absolutamente nessicary
  • OK, así se puede explicar el razonamiento detrás de la alfa-numérico ID – ¿por qué es un entero regular de campo con auto_incremenet no es suficiente?
  • Es un identificador utilizado por la persona que recibe el final de los datos del producto
InformationsquelleAutor Ryan P | 2011-03-08

2 Comentarios

  1. 3

    La base de sus comentarios, mi recomendación es hacer lo siguiente:

    Uso regular de un número entero auto_increment columna como clave principal de la fila y, a continuación, tiene una columna de tipo varchar o uno de los *tipos de texto (dependiendo de la versión del servidor mysql y los requisitos de almacenamiento de datos) para almacenar su «identificador» que utiliza el cliente.

    El identificador puede ser auto-generado a partir de un disparador.

    Si vas a hacer búsquedas basadas en el identificador (es decir, tal vez el usuario introduce un identificador para «saltar» de un registro) tendrá un índice en la columna.

    • ¿Has probado esto? La auto-incremento de valor no se genera hasta después de la BEFORE desencadenantes se han ejecutado, y es demasiado tarde para modificar las columnas de la AFTER desencadenantes.
    • sin duda se puede modificar columnas en el desencadenador AFTER – UPDATE foo set bar='bas' where id=NEW.id
    • ERROR 1442 (HY000): Can't update table 'foo' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
    • Por supuesto, usted puede modificar las columnas en otro las tablas, pero no de la mesa para que el gatillo se dispara.
    • Hmm. Necesito encontrar donde he implementado algo similar me recuerdan cómo en realidad se hizo.
  2. 2

    Puede generar custom auto-valores de incremento de uso de procedimientos almacenados, como se describe en:

    http://en.latindevelopers.com/ivancp/2012/custom-auto-increment-values/

    Obtendrá las claves como:

    SELECT * FROM custom_autonums;
    +----+------------+------------+
    | id | seq_1      | seq_2      |
    +----+------------+------------+
    |  4 | 001-000001 | DBA-000001 |
    |  5 | 001-000002 | DBA-000002 |
    |  6 | 001-000003 | DBA-000003 |
    |  7 | 001-000676 | DBA-000004 |
    |  8 | 001-000677 | DBA-000005 |
    |  9 | 001-000678 | DBA-000006 |

    Pero usted puede modificar los procedimientos almacenados para generar el patrón de: 000, 001, 002, …, 009, 00A, 00B, …, 00Z, 010, …, 0ZZ, …, 100

    • El amor para ver que código. Pero, por desgracia, 403 (Prohibido).
    • Estoy tratando de solucionar ese problema… estará disponible en un par de horas. Lo Siento @BobStein-VisiBone

Dejar respuesta

Please enter your comment!
Please enter your name here