Как обработать недостающую возможность SQLite: отключить триггеры?

Как обработать недостающую возможность SQLite: disable triggers?

У меня нет его, сохранил название триггеров для определенной таблицы.

Например, как я могу отбросить все триггеры?
Что Вы сделали бы?

9
задан anthares 15 February 2010 в 11:30
поделиться

3 ответа

Я написал очень простую функцию расширения, чтобы установить для логического значения значение true или false.

И функция для получения этого значения (GetAllTriggersOn ()).

С помощью этой функции я могу определить все свои триггеры, например:

CREATE TRIGGER tr_table1_update AFTER UPDATE ON TABLE1 WHEN GetAllTriggersOn()
BEGIN
    -- ...
END
8
ответ дан 4 December 2019 в 09:36
поделиться

SQLite хранит информацию о схеме (мета) во встроенной таблице sqlite_master .

Чтобы получить список доступных триггеров, используйте следующий запрос:

SELECT name FROM sqlite_master
WHERE type = 'trigger' -- AND tbl_name = 'a_table_name'
7
ответ дан 4 December 2019 в 09:36
поделиться

No. Боюсь, что нет.

Необходимо использовать динамический sql, чтобы использовать переменную для имени базы данных или столбца.

-121--4435061-

Вы можете использовать этот тестовый код и сравнить результаты! Дио!

#include <vector> 
#include <iostream> 
#include <ctime> 
using namespace std;; 


struct AAA{
    int n;
    string str;
};
int main() { 
    const int BIG = 5000000; 
    vector <AAA> v; 
    for ( int i = 0; i < BIG; i++ ) { 
        AAA a = {i, "aaa"};
        v.push_back( a ); 
    } 

    clock_t now;
    cout << "start" << endl; 
    int n = 0; 
    now = clock(); 
    for(vector<AAA>::iterator it = v.begin(); it != v.end(); ++it) { 
        n += it->n; 
    } 
   cout << clock() - now << endl; 

    n = 0;
    now = clock(); 
    for(size_t i = 0; i < v.size(); ++i) { 
        n += v[i].n; 
    } 
    cout << clock() - now << endl; 

    getchar();
    return n != 0; 
} 
-121--998075-

Возможно, можно создать хранимые процедуры для их удаления и создания. Хорошо ли это для вас?

1
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: