Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

190
Vistas
COMENZAR... FIN vs INICIAR TRANSACCIÓN... COMPROMETER

¿Cuál es la diferencia entre hacer:

 START TRANSACTION ... COMMIT

O haciendo:

 BEGIN ... END

¿Se confirma automáticamente el último, o cuál podría ser un ejemplo práctico del uso de uno de los otros?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tanto en MySQL 5.7 como en MySQL 8, BEGIN y END es lo mismo que en T-SQL y representa una "declaración compuesta" también conocida como "un bloque de código", al igual que las llaves en C, Java, C#, etc.

  • MySQL 5.7: https://dev.mysql.com/doc/refman/5.7/en/begin-end.html
  • MySQL 8.0: https://dev.mysql.com/doc/refman/8.0/en/begin-end.html

Sin embargo, la palabra clave BEGIN también está sobrecargada (confusamente) como un alias para BEGIN WORK y START TRANSACTION , y su semántica depende de si se usan dentro de un programa almacenado o no:

Dentro de todos los programas almacenados (procedimientos y funciones almacenados, disparadores y eventos), el analizador trata BEGIN [WORK] como el comienzo de un bloque BEGIN ... END . Comience una transacción en este contexto con START TRANSACTION en su lugar.

Asi que:

  • START TRANSACTION
    • Siempre inicia una transacción. Debería preferir esta sintaxis.
  • BEGIN :
    • Si está en un procedimiento almacenado, función, activador o evento, BEGIN por sí solo marca el inicio de una declaración compuesta. Solo puede usar START TRANSACTION para iniciar una transacción.
    • Si está ejecutando directamente SQL contra MySQL, esto también inicia una transacción (como se interpreta como BEGIN WORK ). Pero es tonto y confuso usarlo de esta manera, así que evítelo.
  • BEGIN WORK :
    • Este es un alias para START TRANSACTION . Evitaría usar esto por completo para evitar confusiones.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda