我应该在调用$dbh->disconnect
之前分离附加的数据库,还是可以忽略DETACH
这样的情况?
use DBI;
my $dbh = DBI->connect( "DBI:SQLite:dbname=my_db_1", ...
$dbh->do( "ATTACH DATABASE 'my_db_2' AS data" );
...
$dbh->do( "DETACH DATABASE data" );
$dbh->disconnect;
答案 0 :(得分:3)
除非主数据库是内存数据库并且日志模式不是WAL(Write Ahead Logging),否则只关闭数据库就可以了。 即使这样,遇到问题也可能非常罕见。我认为分离是为了您想要单独分离数据库的情况。所以除非另有规定,否则这是个人选择的问题。
这基于以下内容: -
涉及多个附加数据库的事务是原子的, 假设主数据库不是“:memory:”和journal_mode 不是WAL。
如果主数据库是“:memory:”或者是journal_mode 是WAL,然后每个人的交易继续是原子的 数据库文件。但是如果主机在中间崩溃了 COMMIT更新两个或更多数据库文件,其中一些 文件可能会得到其他人可能没有的更改。
This, from Tech On The Net州: -
关闭数据库连接时,附加的数据库将是 自动分离。
以及
要从连接中删除附加的数据库,请使用DETACH DATABASE命令或关闭数据库连接。