SQLite speichert Schemainformationen (Meta-Informationen) in der integrierten Tabelle sqlite_master
.
Um eine Liste der verfügbaren Trigger zu erhalten, verwenden Sie die folgende Abfrage:
%Vor%Also hier ist es 2015 und es gibt noch keine "disable triggers" in SQLite. Für eine mobile Anwendung kann dies problematisch sein - insbesondere, wenn es sich um eine Unternehmens-App handelt, die Offline-Funktionalität und lokale Daten erfordert.
Ein anfänglicher Datenladevorgang kann verlangsamt werden, um durch Ausführung des Triggers zu crawlen, selbst wenn Sie nicht jeden Insert in eine einzelne Transaktion umbrechen.
Ich habe dieses Problem mit SQLite SQL ziemlich einfach gelöst. Ich habe eine Einstellungstabelle, die nicht an der Init-Last teilnimmt. Es enthält eine Liste von Schlüssel / Wert-Paaren. Ich habe einen Schlüssel namens "fireTrigger" mit einem Bit-Wert von 0 oder 1. Jeder Trigger, den ich habe, hat einen Ausdruck, der den Wert auswählt und wenn er gleich 1 ist, löst er den Trigger aus, sonst nicht.
Dieser Ausdruck wird zusätzlich zu allen Ausdrücken verwendet, die in den Daten ausgewertet werden, die sich auf den Trigger beziehen. z.B.:
%Vor% Im einfachen Clean-Effekt kann ich den Trigger mit einem einfachen UPDATE
in der Settings-Tabelle deaktivieren / aktivieren
Wenn Sie die Antwort von Nick Dandoulakis erweitern, können Sie alle relevanten Auslöser löschen und sie vor dem Abschluss der Transaktion wieder aktivieren:
%Vor%Tags und Links triggers sqlite missing-features