我不想在特定上下文中触发的表上有一个触发器。
为了做到这一点,我计划:
- 锁定数据库
- 放下触发器
- 执行我的操作
- 添加触发器
- 解锁数据库
锁定数据库是必要的,这样其他线程尝试执行的任何操作都会停止,直到触发器恢复到位。如何从 C 代码中执行此操作?
使用和SQL在事务中执行您的工作:BEGIN TRANSACTION
COMMIT TRANSACTION
BEGIN TRANSACTION;
DROP TRIGGER dbname.triggername;
(do other stuff)
CREATE TRIGGER ...;
COMMIT TRANSACTION;
使用sqlite3_db_config()
withSQLITE_DBCONFIG_ENABLE_TRIGGER
临时禁用触发器。