如何在yii中锁定整个数据库?

时间:2014-02-09 09:54:09

标签: php database yii

我想将database复制到另一个位置,我不希望它位于另一个用户transaction的中间位置。有没有办法锁定database

2 个答案:

答案 0 :(得分:0)

覆盖 CActiveRecord getDbConnection()并添加其他属性,例如private $inUse,然后检查此项是否正在使用,

或者有一张表,但每次检查都会很慢。

答案 1 :(得分:0)

我使用PostgreSQL。要备份数据库,它使用外部工具(pg_dump)来获取数据库的稳定且一致的快照。如果正在进行事务,则快照将具有事务开始之前的状态。我认为MySQL有一个类似的工具。

无论您使用什么数据库服务器,如果您想知道是否存在活动事务,您都可以使用数据库的标准PDO object

$db=Yii::app()->db;
$pdo=$db->getPdoInstance();
if ($pdo->inTransaction(){
   echo "We have an active transaction";
} else {
   echo "Let's start Database dump";
}