从Perl多次写入SQLite

时间:2016-10-21 14:00:21

标签: perl sqlite

假设我有两个连接到同一SQLite数据库的Perl脚本。如果其中一个脚本正在写入数据库,而另一个脚本也尝试写入数据库,那么第二个脚本连接是否会断开连接?或者它的输入是否会存储在某些SQLite缓存中,SQLite最终会在第一个脚本的写入完成后提交写入?

我不希望我的第二个脚本连接因为SQLIte因第一个脚本的写入而锁定数据库而死亡。如果两个脚本都写入数据库会发生什么?

由于

1 个答案:

答案 0 :(得分:1)

你做不到。 SQLite不允许并发写入。

来自official documentation

  

要写入数据库,进程必须首先获取SHARED锁定   如上所述(如果存在,可能会回滚不完整的更改)   热门杂志)。获得SHARED锁定后,必须使用RESERVED锁定   被收购。

     

RESERVED锁意味着该进程正计划写入   数据库文件在将来的某个时刻,但它是当前的   只是从文件中读取。只有一个RESERVED锁可能处于活动状态   虽然多个SHARED锁可以与单个共存   保留锁定。 RESERVED与PENDING的不同之处在于新的SHARED锁定   可以在保留锁定时获取。