Может быть, другой синтаксический подход?
CREATE TRIGGER testtrigger ON Table1
FOR INSERT
AS
BEGIN
DECLARE @timeNum int
SET @timeNum = SELECT count(*) FROM Table1 WHERE time > (New.time - 120)
IF @timeNum > 3
BEGIN
INSERT INTO Table2 (time, data) VALUES
(NEW.time, 'data1');
END
END
Но также попробуйте некоторые отладочные операторы. Когда я отлаживал свой последний триггер для веб-сервиса, я помещал некоторые операторы INSERT в таблицу отладки, которую я настраивал. Таким образом, вы можете выводить @timeNum каждый раз, когда вызывается триггер, а затем помещать в цикл другой отладочный INSERT, чтобы проверить, действительно ли вы попали в логику INSERT таблицы 2.
UPDATE:
Сожалею! Похоже, SqlLite вроде отстой, я не знал, что ему не хватает этого синтаксиса. Тем не менее, если вы не получаете никаких ответов, рассмотрите некоторые операторы отладки, чтобы убедиться, что пути вашего кода вызываются в правильных условиях.