none
duda con recuperacion de lDs de tabla como llave primaria y contraints RRS feed

  • Pregunta

  • disculpen tengo un problema que por razon desconocida me desfazó los ids consecutivos de una tablas, mi duda es si reingreso esos datos a otras tablas y las renombro, se copian mis contrains y foreinkeys con esta instruccion?

    "insert into nuevatabla from select"


    La programacion en Microsoft cada ves se torna inalcanzable

    viernes, 5 de agosto de 2016 17:25

Respuestas

  • alfonso_tecnicopa,

    ¿Por qué necesitas recrear la secuencia del ID? ¿Te refieres a un ID auto-incremental (IDENTITY)?

    Si es una columna que utiliza la propiedad IDENTITY() es de esperar que existan gaps entre la secuencia. Si utilizas esa columna para gestionar un correlativo en la aplicación entonces no es el camino correcto, estás incidencias se presentarán siempre.

    Por otro lado, la instrucción INSERT INTO... no recrea estructura, sólo estas insertando datos de una tabla origen a ona tabla destino, sin embargo, si la tabla origen tiene referencias en otras tablas entonces debes de modificar el valor de las FK en todas las tablas que referencien a la tabla donde se "desfaso" la secuencia, como vez, no es una tarea fácil y desde mi punto de vista innecesaria.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 5 de agosto de 2016 17:48
  • Hola Alfonso, que los id se desfasen es normal si la columna tiene el atributo IDENTITY en la definición de la tabla, de hecho es parte de su conducta inherente, por ejemplo si insertas un grupo de filas y alguna de las inserciones falla tendras un gap o hueco en dicha secuenta.  Con respecto a tu segunda consulta la respuesta es NO, de hecho esa solución en la que haces dicha copia no te garantiza dicha consecutividad, a menos que la tabla que crees le especifiques un tipo de dato sin el IDENTITY y tu mismo generes de forma artificial dicha consecutividad, pero en caso de seguir ese camino debes tener cuidado con aspectos de concurrencia y que dicha solución no te disminuya el rendimiento de tu Servidor de BD.

    Las constrains en cualquier tabla las debes de definir, no son objetos que se copien per se, pero te haria una pregunta, Realmente hay una razon especial para que tengas ese CONSECUTIVO?.

    Saludos


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    viernes, 5 de agosto de 2016 19:16

Todas las respuestas

  • alfonso_tecnicopa,

    ¿Por qué necesitas recrear la secuencia del ID? ¿Te refieres a un ID auto-incremental (IDENTITY)?

    Si es una columna que utiliza la propiedad IDENTITY() es de esperar que existan gaps entre la secuencia. Si utilizas esa columna para gestionar un correlativo en la aplicación entonces no es el camino correcto, estás incidencias se presentarán siempre.

    Por otro lado, la instrucción INSERT INTO... no recrea estructura, sólo estas insertando datos de una tabla origen a ona tabla destino, sin embargo, si la tabla origen tiene referencias en otras tablas entonces debes de modificar el valor de las FK en todas las tablas que referencien a la tabla donde se "desfaso" la secuencia, como vez, no es una tarea fácil y desde mi punto de vista innecesaria.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 5 de agosto de 2016 17:48
  • Hola Alfonso, que los id se desfasen es normal si la columna tiene el atributo IDENTITY en la definición de la tabla, de hecho es parte de su conducta inherente, por ejemplo si insertas un grupo de filas y alguna de las inserciones falla tendras un gap o hueco en dicha secuenta.  Con respecto a tu segunda consulta la respuesta es NO, de hecho esa solución en la que haces dicha copia no te garantiza dicha consecutividad, a menos que la tabla que crees le especifiques un tipo de dato sin el IDENTITY y tu mismo generes de forma artificial dicha consecutividad, pero en caso de seguir ese camino debes tener cuidado con aspectos de concurrencia y que dicha solución no te disminuya el rendimiento de tu Servidor de BD.

    Las constrains en cualquier tabla las debes de definir, no son objetos que se copien per se, pero te haria una pregunta, Realmente hay una razon especial para que tengas ese CONSECUTIVO?.

    Saludos


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    viernes, 5 de agosto de 2016 19:16
  • alfonso_tecnicopa,

    ¿Por qué necesitas recrear la secuencia del ID? ¿Te refieres a un ID auto-incremental (IDENTITY)?

    Si es una columna que utiliza la propiedad IDENTITY() es de esperar que existan gaps entre la secuencia. Si utilizas esa columna para gestionar un correlativo en la aplicación entonces no es el camino correcto, estás incidencias se presentarán siempre.

    Por otro lado, la instrucción INSERT INTO... no recrea estructura, sólo estas insertando datos de una tabla origen a ona tabla destino, sin embargo, si la tabla origen tiene referencias en otras tablas entonces debes de modificar el valor de las FK en todas las tablas que referencien a la tabla donde se "desfaso" la secuencia, como vez, no es una tarea fácil y desde mi punto de vista innecesaria.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    , los quería recuperar xq la integridad de mis datos se basa en estos IDs cuando hago inner joins para obtener info de un expediente empata el ID de A con ID de B y si se repite uno de ellos ya me duplica el resultado en mi consulta,

    entiendo gracias



    La programacion en Microsoft cada ves se torna inalcanzable

    jueves, 11 de agosto de 2016 15:12