在将行插入或更新到表中之前,我没有找到显式的sqlite锁定命令.sqlite是否自己处理锁定机制?http://sqlite.org/lockingv3.html中描述的寻呼机模块处理锁定机制.但我不确定用户是否可以使用任何命令来显式锁定表.请指教.
谢谢
obm*_*arg 17
据我所知,没有专门的sqlite命令来控制锁定.但是,您可以使用create transaction来获取sqlite来锁定数据库.例如:
BEGIN IMMEDIATE TRANSACTION;
...
COMMIT TRANSACTION;
BEGIN EXCLUSIVE TRANSACTION;
...
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)
如果您阅读我链接的文档,您应该更好地了解IMMEDIATE
&EXCLUSIVE
transactions 之间的区别.
值得注意的是,与LOCK TABLE
其他sql数据库中的语句不同,sqlite中的锁适用于整个数据库,而不仅仅适用于单个表.
SQLite执行任何锁定以实现SQL语句描述的事务方案.特别是,如果您没有描述任何内容,那么您将获得自动提交行为,并在每个语句的持续时间内保持锁定,然后在语句结束时删除.如果您需要更长的交易(通常是真的!),那么您明确要求BEGIN TRANSACTION
(通常缩短为BEGIN
)并以COMMIT TRANSACTION
(或ROLLBACK TRANSACTION
)结束.事务处理经常由您的语言界面包装(因为这使得更容易正确,将事务生命周期耦合到代码块或方法调用),但在基础级别,它归结为BEGIN
/ COMMIT
/ ROLLBACK
.
简而言之,你有交易.锁用于实现事务.你没有原始锁(这是一件好事;它们比你从第一眼就想到的那样难以做到正确).
归档时间: |
|
查看次数: |
11677 次 |
最近记录: |