sql >> Databáze >  >> RDS >> Mysql

ZAČÁTEK...KONEC vs. ZAČÁTEK TRANSAKCI...POTVRDIT

V MySQL 5.7 a MySQL 8 BEGIN a END je stejný jako v T-SQL a představuje "složený příkaz" také známý jako "blok kódu", stejně jako složené závorky v C, Java, C# atd.

Nicméně BEGIN klíčové slovo je také (zmateně) přetížené jako alias pro BEGIN WORK a START TRANSACTION a jejich sémantika závisí na tom, zda jsou používány uvnitř uloženého programu nebo ne:

Takže:

  • START TRANSACTION
    • Vždy zahájí transakci. Tuto syntaxi byste měli preferovat.
  • BEGIN :
    • Pokud se nacházíte v uložené proceduře, funkci, spouštěči nebo události, pak BEGIN sám o sobě označuje začátek složeného příkazu. Můžete použít pouze START TRANSACTION k zahájení transakce.
    • Pokud přímo spouštíte SQL proti MySQL, pak to také spustí transakci (jak je interpretováno jako BEGIN WORK ). Ale je to hloupé a matoucí používat to tímto způsobem, takže se tomu vyhněte.
  • BEGIN WORK :
    • Toto je alias pro START TRANSACTION . Vyhnul bych se tomu úplně, abych zabránil zmatkům.



  1. Jaký je nejlepší způsob řízení verzí uložených procedur serveru SQL?

  2. pokud neexistuje SQL Statement Giving Error

  3. Oblast časového pásma nebyla nalezena

  4. Limitní rozsah MySQL