On Jun 24, 2009, at 9:17 AM, Michal Seliga wrote:
> hi
>
> in my application i sometimes must insert huge amount of pre-
> prepared data so i
> don't want triggers to do any action while i am inserting them
>
> for this reason i created one small table which is normally empty,
> however if it
> contains record set to 1 triggers shoudl not do any action. to make
> this happen
> i use triggers like this following example
>
> CREATE TRIGGER sync_Activity_oninsert after insert on Activity
> for each row
> when (not exists(select * from sync_block where sub_block=1))
> begin
> --action
> end;
>
> to block triggers i do: insert into sync_block values(1);
> to enable them back i do: delete from sync_block;
>
>
> this helped to stop triggers from doing any action, but they still
> launch and in
> result import of data takes 2x more with triggers then without them.
>
> is there any other, faster, way to temporarily disable triggers?
>
> i found one more possibility, someone recommended it on this list in
> year 2005
> that its possible to list all create trigger statements from
> database, drop
> them, make action and recreate them back. this will work, but time
> for creating
> so many triggers (yes, they are many) may be also very bad. in
> addition it
> doesn't seem as very nice solution to me...
>
> the most prefered way for me would be to use some pragma to disable
> triggers,
> but looking to documentation i wasn't able to find any...
>
> maybe someone has any other idea?
Instead of
WHEN not exists(SELECT * FROM ....)
create an application-defined function (perhaps called
"enable_triggers()") that returns either 1 or 0 depending on the
setting of some variable in your application. Then use
WHEN enable_triggers()
The triggers will still launch, but calling an application-defined
function takes much less time than running NOT EXISTS, so the triggers
will very quickly figure out that they should exit without doing
anything.
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
D. Richard Hipp
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users