Tengo que recuperar todas las secuencias con su nombre de la tabla junto con el nombre de la columna en la que la secuencia se aplica
.De alguna forma me las arreglé para recuperar nombre de la tabla correspondiente a la secuencia porque
en mi base de datos de la secuencia se almacena con el nombre como nombre de la tabla
de diccionario de datos(all_sequences y all_tables) .

Por favor, hágamelo saber cómo recuperar nombre de la columna correspondiente si es posible!!

InformationsquelleAutor Vineet | 2010-06-17

3 Comentarios

  1. 6

    En Oracle, una secuencia es un objeto independiente, no está asociada con una determinada tabla o columna. Por ejemplo, puede ejecutar esta consulta para obtener una lista de las secuencias:

    SELECT * FROM all_sequences

    Y cuando se crea una secuencia, te darás cuenta de que no hay nada en el CREAR la SECUENCIA de sintaxis para indicar que desea asociar con una tabla o columna.

    Una secuencia es sólo un número único generador, no importa lo que hagas con el número generado a partir de ella (por ejemplo, si inserta la secuencia de valor en una tabla, etc.), simplemente están ahí para proporcionar ese número único.

    Así que es imposible decir para una columna dada en qué secuencia se utiliza (si hay alguno) para generar que el valor de la columna.

  2. 2

    Usted puede a menudo ‘adivinar’ en una correlación mirando el NÚMERO_FINAL en all_sequences y el siguiente SQL (que se ve en el mayor número de columnas numéricas definidas como parte de una clave primaria).

    select table_name, column_name, utl_raw.cast_to_number(high_value) 
    from dba_tab_columns
    where owner = '...'
    and data_type = 'NUMBER'
    and (owner, table_name, column_name) in 
      (select cc.owner, cc.table_name, cc.column_name
      from dba_cons_columns cc 
         join dba_constraints c 
           on cc.owner = c.owner and cc.constraint_name = c.constraint_name
      where c.constraint_type = 'P')
    order by 3;

    Pero es una buena idea adoptar un estándar de nomenclatura que indica la correlación (por ejemplo el mismo que el table_name con un _SEQ en el extremo).

  3. 0

    Ver dcp de la respuesta.

    Sin embargo, una secuencia normalmente se utiliza para generar una clave única para la tabla corresponde a intentar buscar las claves primarias y/o índices únicos en la tabla de coincidencias.

    • Bannister – creo que realmente depende de la situación. En mi tienda, utilizamos una secuencia para cada esquema, no la de cada tabla.
    • lo siento, no debería haber dicho «normalmente». Sin embargo, en Vineet caso, parece como si las secuencias se correlacionan con las tablas específicas. Sólo espero que no la hay más de una secuencia de acuerdo con la tabla…
    • ¿Cómo se define «Corresponde a» y «coincidencia»? ¿Por qué es más que una secuencia por cada tabla es una mala cosa?
    • lo que se establece para su caché?
    • Página – No estoy seguro de que sé lo que quieres decir, ¿puede aclarar?
    • Como DCP notas, una secuencia puede ser utilizado a través de varias tablas. Sin embargo, parece ser más común (en mi experiencia) para utilizar una determinada secuencia para generar claves únicas de una tabla específica – en tales circunstancias, el nombre de la secuencia se basa típicamente en el nombre de la tabla (como parece ser cierto para Vineet). Esto es lo que quiero decir por «corresponde a» y «coincidencia».
    • Más de una secuencia de acuerdo con la tabla sería una cosa mala por dos razones: en primer lugar, porque implica que hay más de una clave única para la mesa, o (peor) porque dos secuencias diferentes pueden ser usadas para generar la «única» clave de valores para el mismo campo de clave, con el probable resultado final de la generación de los valores duplicados de registros diferentes. En segundo lugar, porque va a hacer Vineet el trabajo más difícil.
    • No estoy seguro de por qué usted asume habría valores duplicados o dos teclas. Hay un incremento en la cláusula al Crear la Secuencia y se Inicia Con la cláusula. Dos secuencias de la misma clave, empieza uno a 1 y el otro en el 2 y el incremento de ambos por 2. Una secuencia generará número par y el otro impar — en la misma clave. Si no se hace Vineet trabajo más difícil es irrelevante. Él no la creación de la Seqs, la consulta de los ya existentes. No sabemos si el diseñador de bases de datos lo hizo o no.
    • una secuencia tiene una memoria caché de la cláusula? Estás usando 1 secuencia para un esquema completo y no han explorado el efecto de la memoria caché? Ok, así que esto es una muy baja concurrencia de la base de datos? No un montón de simultáneas se insertan?
    • usted podría hacer eso, pero ¿por qué quieres?
    • Página – en Realidad, yo no era consciente de la caché de la cláusula de secuencias, gracias por señalándolo.
    • Esto es muy común la técnica de «distribución» de las aplicaciones. Late un GUID, siempre y cuando tenga un poco de idea de que el número total de nodos y salir de la sala. El punto es que puede suceder, no es por defecto de malo, que tiene un propósito válido…
    • muy, muy importante para el rendimiento. Si se trata de un big-boy enterprise app. Si es de su familia moneda administrador de la aplicación, a continuación, no importa. El hecho de que usted está usando sólo uno de los medios que se podrían registrar muchas completa dispares procesos juntos. Esta es una de esas cosas en las obras», pero no escala bien» de la categoría. Las cosas en esa categoría son a menudo nunca un problema ya que la mayoría de las aplicaciones nunca empujar los límites. Run-of-the-mill apps… no te preocupes… el Big-boy aplicaciones empresariales, aumentar la caché y empezar a migrar de uno solo.

Dejar respuesta

Please enter your comment!
Please enter your name here