* 启动事务
* @return bool
*/
public function begin()
{
if ($this->transDepth == 0)
{
$this->query('START TRANSACTION')
}
$this->transDepth++
return TRUE
}
/**
* 事务提交
* @return bool
*/
public function commit()
{
if ($this->transDepth > 0)
{
$result = $this->query('COMMIT')
$this->transDepth = 0
if(!$result) die("err:trans commit ".mysql_error())
}
return TRUE
}
/**
* 事务回滚
* @return bool
*/
public function rollback()
{
if ($this->transDepth > 0)
{
$result = $this->query('ROLLBACK')
$this->transDepth = 0
if(!$result) die("err:trans commit ".mysql_error())
}
return TRUE
}
如果是JDBC其实很简单,就是先setAutoCommit(false)然后把你的数据库 *** 作语句都执行完了,再手动调用commit方法就行了,所谓的事务其实原则上很简单,尤其是关系型数据库,说白了就是所有的SQL成功了才提交,不成功就rollback仅此而已这个直接用mysql语句我不知道怎么实现,借助PHP还是比较简单的。注意,表必须为InnoDB或DBD类型,其他类型不支持Transaction事务。
下面是一段PHP代码,用来实现确认和出错回滚:
mysql_query("SET AUTOCOMMIT=0")
$sql1='insert "user" values("A")'
$sql2='insert "user" values("B")'
$sql3='insert "user" values("C")'
$res1 = mysql_query($sql1)
$res2 = mysql_query($sql2)
$res3 = mysql_query($sql3)
if($res1 &&$res2 &&$res3)
mysql_query("COMMIT")
else
mysql_query("ROLLBACK")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)