1: <?php
2:
3: namespace PHPixie\Database\Connection;
4:
5: abstract class Transactable extends \PHPixie\Database\Connection
6: {
7: protected $savepoint = 0;
8:
9: public function savepointTransaction($name = null)
10: {
11: if($name === null) {
12: $name = 'savepoint_'.$this->savepoint;
13: $this->savepoint++;
14: }
15:
16: $this->createTransactionSavepoint($name);
17: return $name;
18: }
19:
20: public abstract function beginTransaction();
21: public abstract function commitTransaction();
22: public abstract function rollbackTransaction();
23: public abstract function inTransaction();
24: public abstract function rollbackTransactionTo($savepoint);
25:
26: protected abstract function createTransactionSavepoint($name);
27: }