8
A
回答
7
我寫了一個很簡單的擴展功能來設置一個布爾值true或false。
還有一個函數來檢索這個值(GetAllTriggersOn())。
有了這個功能,我可以這樣定義我的所有觸發器:
CREATE TRIGGER tr_table1_update AFTER UPDATE ON TABLE1 WHEN GetAllTriggersOn()
BEGIN
-- ...
END
1
6
SQLite將架構(元)信息存儲在內置的sqlite_master
表中。
要獲取可用觸發的列表,請使用以下查詢:
SELECT name FROM sqlite_master
WHERE type = 'trigger' -- AND tbl_name = 'a_table_name'
3
所以這裏是2015年和目前仍然沒有「禁止觸發器的」 SQLite中。對於移動應用程序,這可能會產生問題 - 尤其是如果它是需要脫機功能和本地數據的公司應用程序。
即使您沒有將每個插入包裝在單個事務中,也可以通過觸發器執行來減緩初始數據加載以進行爬網。
我用SQLite SQL很簡單地解決了這個問題。我有一個不參與init加載的設置表。它包含鍵/值對的「列表」。我有一個名爲'fireTrigger'的鍵,其值爲0或1.每個觸發器都有一個表達式來選擇值,如果它等於1,則觸發觸發器,否則觸發器不觸發。
此表達式是對與觸發器相關的數據評估的任何表達式的補充。例如:
AND 1 = (SELECT val FROM MTSSettings WHERE key = 'fireTrigger')
在簡單的清洗效果,這允許我禁用/啓用一個簡單UPDATE
將設置表
0
擴展在尼克Dandoulakis的回答了扳機,你可以放下所有相關的觸發器,然後恢復它們在交易完成之前:
BEGIN;
SELECT name, sql FROM sqlite_master WHERE type = 'trigger' AND tbl_name = 'mytable';
-- store all results
-- for each name: DROP TRIGGER $name;
-- do normal work
-- for each sql: execute the SQL verbatim
COMMIT;
相關問題
- 1. 禁用功能安全處理XML的
- 2. 如何在SQLite中傳遞用於觸發器功能的變量?
- 3. 如何處理MySQL中缺失的列?
- 4. 如何處理缺失參數的Htaccess
- 5. 如何寫一個觸發功能jQuery的觸發器()
- 6. OpenGL缺失功能?
- 7. android.net.TrafficStats缺失功能
- 8. SQLite觸發器(不觸發)
- 9. 如何創建許可庫來處理啓用/禁用功能
- 10. 如何觸發功能?
- 11. 爲單元格或範圍禁用onEdit觸發器功能
- 12. 如何處理基於更改的表名/列的sqlite觸發器?
- 13. pyinotify:處理IN_MODIFY觸發器
- 14. 觸發器處理SQL Server
- 15. ASP.NET DropDownList - 如何處理缺失值?
- 16. 火花如何處理缺失值?
- 17. 懸停功能觸發器
- 18. 使用Next_Day功能的Sql觸發器
- 19. 當組件缺失時禁用應用程序功能
- 20. AS3的ScrollPane功能缺失
- 21. DocDb模擬器缺失功能
- 22. 觸發功能
- 23. 觸發功能
- 24. Android SQlite觸發器
- 25. 不使用CPU12處理器的功能
- 26. 如何禁用空處理器
- 27. 功能/觸發器已在使用中?
- 28. 觸發器如何處理事務的併發可見性?
- 29. 的phpMyAdmin不能處理觸發
- 30. 如何使觸發器禁用SQLite中特定表上的刪除?
你是如何在SQLite中創建函數的? – Ivan 2017-03-14 21:34:47