sql >> Databasteknik >  >> RDS >> Mysql

BÖRJA...SLUTA vs BÖRJA TRANSAKTION...ÅTGÄRDER

I både MySQL 5.7 och MySQL 8, BEGIN och END är samma som i T-SQL och representerar en "sammansatt sats" även känd som "ett kodblock", precis som hängslen i C, Java, C#, etc.

Men BEGIN sökord är också (förvirrande) överbelastad som ett alias för BEGIN WORK och START TRANSACTION , och deras semantik beror på om de används i ett lagrat program eller inte:

Så:

  • START TRANSACTION
    • Startar alltid en transaktion. Du bör föredra denna syntax.
  • BEGIN :
    • Om du befinner dig i en lagrad procedur, funktion, trigger eller händelse, BEGIN i sig markerar början på ett sammansatt uttalande. Du kan bara använda START TRANSACTION för att starta en transaktion.
    • Om du kör SQL direkt mot MySQL, startar detta också en transaktion (som det tolkas som BEGIN WORK ). Men det är dumt och förvirrande att använda det på det här sättet, så undvik det.
  • BEGIN WORK :
    • Detta är ett alias för START TRANSACTION . Jag skulle undvika att använda detta helt för att förhindra förvirring.



  1. Skillnad i tid mellan poster

  2. ora-06553 pls-306 fel nummer eller typer av argument i anrop till 'ogc_x'

  3. spring data JPA - mysql - findById() tom om inte findAll() anropats tidigare

  4. Kontrollera att två datum inte var mellan två ett annat datum + MYSQl