Database SQLite中的显式锁定机制
在向表中插入或更新行之前,我没有找到明确的sqlite锁定命令。sqlite是否自己处理锁定机制? 中所述的寻呼机模块处理锁定机构。但我不确定用户是否可以使用任何命令来显式锁定表。请给我一些建议Database SQLite中的显式锁定机制,database,sqlite,Database,Sqlite,在向表中插入或更新行之前,我没有找到明确的sqlite锁定命令。sqlite是否自己处理锁定机制? 中所述的寻呼机模块处理锁定机构。但我不确定用户是否可以使用任何命令来显式锁定表。请给我一些建议 谢谢据我所知,没有专门的sqlite命令来控制锁定。但是,您可以让sqlite使用锁定数据库。例如: BEGIN IMMEDIATE TRANSACTION; ... COMMIT TRANSACTION; BEGIN EXCLUSIVE TRANSACTION; ... COMMIT TRANSAC
谢谢据我所知,没有专门的sqlite命令来控制锁定。但是,您可以让sqlite使用锁定数据库。例如:
BEGIN IMMEDIATE TRANSACTION;
...
COMMIT TRANSACTION;
BEGIN EXCLUSIVE TRANSACTION;
...
COMMIT TRANSACTION;
如果您阅读了我链接的文档,您应该会更好地了解即时
和独占
事务之间的区别
可能值得注意的是,sqlite中的锁适用于整个数据库,而不仅仅是单个表,这与其他sql数据库中的
LOCK TABLE
语句不同。sqlite执行任何必要的锁定,以实现sql语句描述的事务方案。特别是,如果您没有描述任何语句,那么您将获得自动提交行为,在每个语句的持续时间内保持一个锁,然后在语句完成时删除该锁。如果您需要更长的事务(通常是真的!),那么您可以通过开始事务
(通常缩写为开始
)明确地请求它们,并通过提交事务
(或回滚事务
)完成。事务处理通常由您的语言接口包装(因为这样做可以更容易地获得正确的结果,将事务生存期与代码块或方法调用相耦合),但在基本级别,它归结为开始
/提交
/回滚
简言之,你有交易。锁用于实现事务。您没有原始锁(这是一件好事;它们比您乍一看所想的更难获得正确的锁)