如何锁定SQLite数据库?

时间:2012-10-17 06:04:13

标签: c sqlite

我在一个表上有一个触发器,我不想在特定的上下文中触发。

为了做到这一点,我计划:

  1. 锁定数据库
  2. 放下触发器
  3. 执行我的操作
  4. 添加触发器
  5. 解锁数据库
  6. 锁定数据库是必要的,以便其他线程尝试执行的任何操作都将停止,直到触发器恢复到位。我如何从C代码中执行此操作?

2 个答案:

答案 0 :(得分:2)

使用BEGIN TRANSACTIONCOMMIT TRANSACTION SQL在a transaction中执行您的工作:

BEGIN TRANSACTION;
DROP TRIGGER dbname.triggername;
(do other stuff)
CREATE TRIGGER ...;
COMMIT TRANSACTION;

答案 1 :(得分:0)

使用sqlite3_db_config()SQLITE_DBCONFIG_ENABLE_TRIGGER暂时禁用触发器。