Câu trả lời theo số:
-
Không; if
S2
không thành công, toàn bộ giao dịch bị hủy bỏ và chỉ có thể được khôi phục lại. -
Có lẽ có một sự hiểu lầm. Câu lệnh SQL
BEGIN
bắt đầu một giao dịch khác vớiBEGIN
bắt đầu một khối PL / pgSQL. Cái sau không không bắt đầu giao dịch.Nếu không có lệnh SQL rõ ràng
BEGIN
, mọi câu lệnh chạy trong giao dịch của chính nó (“autocommit”).Tất cả các câu lệnh trong một hàm được thực thi trong một giao dịch duy nhất.
-
Bạn không thể có
COMMIT
(hoặcROLLBACK
) trong một hàm. -
Đúng. Đây là câu hỏi tương tự như 1., chỉ ở câu phủ định.