Video: 6 TWEAK nên cài ngay sau khi Jailbreak iOS 12 - 12.1.2 2025
Bạn có thể có thể thấy một sự phức tạp trong cách SQL gây nên hoạt động. Giả sử bạn tạo ra một trigger gây ra câu lệnh SQL sẽ được thực thi trên một bảng khi thi hành một số câu lệnh SQL trước đó. Điều gì sẽ xảy ra nếu bản tuyên bố kích hoạt đó gây ra một cú kích hoạt thứ hai?
Kích hoạt thứ hai gây ra câu lệnh SQL thứ ba được thực hiện trên một bảng thứ hai, điều này có thể gây ra một kích hoạt khác để kích hoạt, ảnh hưởng đến một bảng khác. Làm thế nào có thể giữ mọi thứ thẳng thắn? SQL xử lý kiểu kích hoạt kiểu súng máy này kích hoạt bằng một cái gì đó được gọi là ngữ cảnh thực thi kích hoạt.
Có thể thực hiện các thao tác INSERT, DELETE và UPDATE bằng cách làm các ngữ cảnh mà chúng xuất hiện. Khi kích hoạt một ngọn lửa, một bối cảnh thực hiện được tạo ra. Chỉ có một bối cảnh thực hiện có thể hoạt động tại một thời điểm. Trong bối cảnh đó, một câu lệnh SQL có thể được thực hiện kích hoạt một trình kích hoạt thứ hai.
Tại thời điểm đó, ngữ cảnh thực hiện hiện tại bị treo trong một thao tác tương tự như đẩy giá trị vào một ngăn xếp. Một bối cảnh thực hiện mới, tương ứng với kích hoạt thứ hai, được tạo ra, và hoạt động của nó được thực hiện.
Không có giới hạn tùy ý nào đối với độ sâu của tổ. Khi một thao tác hoàn thành, ngữ cảnh thực hiện của nó sẽ bị hủy và ngữ cảnh thực thi tiếp theo cao hơn sẽ "bật ra khỏi ngăn xếp" và kích hoạt lại. Quá trình này tiếp tục cho đến khi tất cả các hành động được hoàn thành và tất cả các bối cảnh thực hiện đã bị phá hủy.