Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

192
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!