特定のコンテキストでトリガーしたくないテーブルにトリガーがあります。
これを行うために、次のことを計画しています。
- データベースのロック
- トリガーを落とす
- 私の操作を実行する
- トリガーの追加
- データベースのロック解除
データベースのロックは、トリガーが元の位置に戻るまで、他のスレッドが実行しようとする操作を停止するために必要です。Cコードからこれを行うにはどうすればよいですか?
およびSQLを使用して、トランザクションで作業を実行します。BEGIN TRANSACTION
COMMIT TRANSACTION
BEGIN TRANSACTION;
DROP TRIGGER dbname.triggername;
(do other stuff)
CREATE TRIGGER ...;
COMMIT TRANSACTION;
sqlite3_db_config()
withを使用しSQLITE_DBCONFIG_ENABLE_TRIGGER
て、トリガーを一時的に無効にします。