Perl中的COMMIT和回滚操作

提交操作

提交是向数据库发出绿色信号以完成更改的操作,此操作完成后,任何更改都无法还原到其原始位置。

这是一个调用提交API的简单示例。

$dbh->commit or die $dbh->errstr;

回滚操作

如果您对所有更改都不满意,或者在两次操作之间都遇到错误,则可以还原这些更改以使用 回滚API。

这是一个调用回滚API的简单示例。

$dbh->rollback or die $dbh->errstr;

开始事务

许多数据库支持事务。这意味着您可以进行一堆查询,这些查询将修改数据库,但是实际上没有任何更改。然后,最后,发出特殊的SQL查询COMMIT,所有更改都同时进行。或者,您可以发出查询ROLLBACK,在这种情况下,所有更改都将被丢弃,数据库保持不变。

Perl DBI模块提供了begin_work API,该API启用事务(通过关闭AutoCommit),直到下一次调用提交或回滚为止。在下一次提交或回滚之后,AutoCommit将自动再次打开。

$rc = $dbh->begin_work or die $dbh->errstr;

自动提交选项

如果您的事务很简单,则可以省去必须提交大量提交的麻烦。进行连接调用时,可以指定一个AutoCommit 选项,该选项将在每次成功查询后执行自动提交操作。这是它的样子-

my $dbh = DBI->connect($dsn, $userid, $password, {AutoCommit => 1}) or die $DBI::errstr;

在这里,AutoCommit可以取值为1或0,其中1表示AutoCommit处于打开状态,而0表示AutoCommit已处于关闭状态。