Trong cả MySQL 5.7 và MySQL 8, BEGIN
và END
giống như trong T-SQL và đại diện cho một "câu lệnh ghép" còn được gọi là "một khối mã", giống như dấu ngoặc nhọn trong C, Java, C #, v.v.
- MySQL 5.7: https://dev.mysql .com / doc / refman / 5.7 / vi / begin-end.html
- MySQL 8.0: https://dev.mysql .com / doc / refman / 8.0 / vi / begin-end.html
Tuy nhiên, BEGIN
từ khóa cũng là (gây nhầm lẫn) được quá tải làm bí danh cho BEGIN WORK
và START TRANSACTION
và ngữ nghĩa của chúng phụ thuộc vào việc chúng có được sử dụng trong một chương trình được lưu trữ hay không:
Vì vậy:
-
START TRANSACTION
- Luôn bắt đầu một giao dịch. Bạn nên thích cú pháp này hơn.
-
BEGIN
:- Nếu bạn đang ở trong một Thủ tục, Hàm, Trình kích hoạt hoặc Sự kiện được Lưu trữ, thì
BEGIN
tự nó đánh dấu sự bắt đầu của một câu lệnh ghép. Bạn chỉ có thể sử dụngSTART TRANSACTION
để bắt đầu giao dịch. - Nếu bạn đang trực tiếp thực thi SQL trên MySQL, thì điều này cũng bắt đầu một giao dịch (vì nó được hiểu là
BEGIN WORK
). Nhưng thật ngớ ngẩn và khó hiểu khi sử dụng nó theo cách này, vì vậy hãy tránh nó.
- Nếu bạn đang ở trong một Thủ tục, Hàm, Trình kích hoạt hoặc Sự kiện được Lưu trữ, thì
-
BEGIN WORK
:- Đây là bí danh cho
START TRANSACTION
. Tôi hoàn toàn tránh sử dụng điều này để tránh nhầm lẫn.
- Đây là bí danh cho