Ngày 18 · Trigger · BEFORE và AFTER
Một câu INSERT đi qua các trigger theo thứ tự nào
Thứ tự chạy trigger quanh một câu INSERT vào order_items
Câu INSERT hai dòng vào order_items chạy BEFORE STATEMENT một lần, rồi với từng dòng chạy BEFORE ROW (điền unit_price, có thể sửa NEW) và ghi dòng kèm kiểm tra ràng buộc, sau khi ghi xong mọi dòng thì chạy AFTER ROW cho từng dòng (trừ tồn kho) và cuối cùng AFTER STATEMENT một lần; lỗi ở bất kỳ bước nào hủy cả câu lệnh.
CÂU LỆNH
INSERT INTO order_items (order_id, product_id, quantity) VALUES (41, 16, 2), (41, 22, 1);
LẶP CHO TỪNG DÒNG
SAU KHI GHI ĐỦ DÒNG
BEFORE STATEMENT
chạy 1 lần
chưa có NEW
BEFORE ROW
điền unit_price
NEW sửa được
Ghi dòng
NOT NULL, CHECK, PK
giá trị cuối của NEW
AFTER ROW
trừ stock_quantity
NEW chỉ đọc
AFTER STATEMENT
chạy 1 lần
bảng chuyển tiếp
Lỗi ở bất kỳ bước nào: RAISE EXCEPTION hoặc vi phạm ràng buộc
cả câu INSERT bị hủy, kể cả phần kho đã trừ cho dòng trước
BEFORE ROW trả về NEW thì dòng được ghi; trả về NULL thì dòng bị bỏ qua, không báo lỗi.
© tiennhm