none
Paso a paso para realizar un insert a SQL RRS feed

  • Pregunta

  • Estimados,

    quiero diagramar el proceso de insert lo más completo y técnico posible, para esto tengo los siguientes pasos:

    1.- verificar que la tabla en donde se insertan los datos existen

    2.- comenzar transacción

    3.- comenzar try

    4.- realizar insert

    5.- cerrar try comenzar catch finalizar catch

    6.- finalizar transacción

    algo más que pueda incorporar?

    miércoles, 28 de mayo de 2014 15:13

Respuestas

  • Mario,

    Para que quieres verificar que la tabla existe primero?

    Si la tabla no existe entonces la sentencia insert fallara y el flujo pasara a la parte CATCH.

    1.- comenzar try

    2.- comenzar transacción (setear SET XACT_ABORT ON antes de abrir la transaccion)

    3.- realizar insert

    4.- salvar transaccion (COMMIT TRANSACTION)

    5.- Salir del bloque o procedimiento y retornar no fallo (RETURN 0;)

    6.- cerrar try

    7.- comenzar catch

    8.- finalizar transacción

    9.- Retornar error (RETURN -1;)

    10.- finalizar catch

    Los pasos 2 y 4 se necesitan si es que la transaccion incluye mas de una sentencia de manipulacion de datos de lo contrario SQL Server usa una transaccion interna. El paso  8 debe chequear si existe alguna transaccion abierta antes de revertirla (@@TRANCOUNT), de lo contrario reciviras error.

    El patron puede cambiar si deseas otro nivel de aislamiento, etc.

    Aqui tienes un link que explica el patron basico para usar este bloque.

    Error Handling in SQL 2005 and Later
    http://sommarskog.se/error_handling_2005.html

     


    AMB

    Some guidelines for posting questions...





    • Editado HunchbackMVP miércoles, 28 de mayo de 2014 15:35
    • Marcado como respuesta Uriel Almendra martes, 3 de junio de 2014 17:17
    miércoles, 28 de mayo de 2014 15:27

Todas las respuestas

  • Mario,

    Para que quieres verificar que la tabla existe primero?

    Si la tabla no existe entonces la sentencia insert fallara y el flujo pasara a la parte CATCH.

    1.- comenzar try

    2.- comenzar transacción (setear SET XACT_ABORT ON antes de abrir la transaccion)

    3.- realizar insert

    4.- salvar transaccion (COMMIT TRANSACTION)

    5.- Salir del bloque o procedimiento y retornar no fallo (RETURN 0;)

    6.- cerrar try

    7.- comenzar catch

    8.- finalizar transacción

    9.- Retornar error (RETURN -1;)

    10.- finalizar catch

    Los pasos 2 y 4 se necesitan si es que la transaccion incluye mas de una sentencia de manipulacion de datos de lo contrario SQL Server usa una transaccion interna. El paso  8 debe chequear si existe alguna transaccion abierta antes de revertirla (@@TRANCOUNT), de lo contrario reciviras error.

    El patron puede cambiar si deseas otro nivel de aislamiento, etc.

    Aqui tienes un link que explica el patron basico para usar este bloque.

    Error Handling in SQL 2005 and Later
    http://sommarskog.se/error_handling_2005.html

     


    AMB

    Some guidelines for posting questions...





    • Editado HunchbackMVP miércoles, 28 de mayo de 2014 15:35
    • Marcado como respuesta Uriel Almendra martes, 3 de junio de 2014 17:17
    miércoles, 28 de mayo de 2014 15:27
  • muchas gracias.-
    miércoles, 28 de mayo de 2014 15:32
  • verificar si el dato a insertar ya existe(uno igual). no podría agregarse?
    miércoles, 28 de mayo de 2014 15:38
  • interesante, validar que no se inserte dos veces...
    miércoles, 28 de mayo de 2014 16:02