簡體   English   中英

在存儲過程之外提交事務

[英]Committing transaction outside of stored procedure

當執行1個或多個存儲過程時,是否可以在該過程周圍而不是內部放置事務?

$db->beginTransaction();

$db->exec("call my_procedure()");
$db->exec("call my_second_procedure()");

$db->commit();

執行上述操作( pdo )時,事務是否在兩個調用之后都提交,還是在每次調用運行后自動提交,使beginTransaction()commit()無效?

是的你可以。

只要沒有一個過程在內部執行COMMITROLLBACKSTART TRANSACTION ,並且沒有一個過程(或您的代碼)執行任何導致隱式提交語句 ,就可以正常工作。

運行事務時,即使SELECT @@autocommit;提交也不起作用SELECT @@autocommit; 仍將指示“ 1”,這僅表示在事務不活動時您的會話處於自動提交模式。

我會說,“取決於” :-)

首先,如果使用的是不支持事務的MyISAM,則PDO::beginTransaction()仍返回true,但沒有事務開始。

參見http://php.net/manual/en/pdo.transactions.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM