Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database SQLite中的显式锁定机制_Database_Sqlite - Fatal编程技术网

Database SQLite中的显式锁定机制

Database SQLite中的显式锁定机制,database,sqlite,Database,Sqlite,在向表中插入或更新行之前,我没有找到明确的sqlite锁定命令。sqlite是否自己处理锁定机制? 中所述的寻呼机模块处理锁定机构。但我不确定用户是否可以使用任何命令来显式锁定表。请给我一些建议 谢谢据我所知,没有专门的sqlite命令来控制锁定。但是,您可以让sqlite使用锁定数据库。例如: BEGIN IMMEDIATE TRANSACTION; ... COMMIT TRANSACTION; BEGIN EXCLUSIVE TRANSACTION; ... COMMIT TRANSAC

在向表中插入或更新行之前,我没有找到明确的sqlite锁定命令。sqlite是否自己处理锁定机制? 中所述的寻呼机模块处理锁定机构。但我不确定用户是否可以使用任何命令来显式锁定表。请给我一些建议


谢谢

据我所知,没有专门的sqlite命令来控制锁定。但是,您可以让sqlite使用锁定数据库。例如:

BEGIN IMMEDIATE TRANSACTION;
...
COMMIT TRANSACTION;

BEGIN EXCLUSIVE TRANSACTION;
...
COMMIT TRANSACTION;
如果您阅读了我链接的文档,您应该会更好地了解
即时
独占
事务之间的区别


可能值得注意的是,sqlite中的锁适用于整个数据库,而不仅仅是单个表,这与其他sql数据库中的
LOCK TABLE
语句不同。

sqlite执行任何必要的锁定,以实现sql语句描述的事务方案。特别是,如果您没有描述任何语句,那么您将获得自动提交行为,在每个语句的持续时间内保持一个锁,然后在语句完成时删除该锁。如果您需要更长的事务(通常是真的!),那么您可以通过
开始事务
(通常缩写为
开始
)明确地请求它们,并通过
提交事务
(或
回滚事务
)完成。事务处理通常由您的语言接口包装(因为这样做可以更容易地获得正确的结果,将事务生存期与代码块或方法调用相耦合),但在基本级别,它归结为
开始
/
提交
/
回滚

简言之,你有交易。锁用于实现事务。您没有原始锁(这是一件好事;它们比您乍一看所想的更难获得正确的锁)