Triggers sqlite3触发器自动添加新的月份记录

Triggers sqlite3触发器自动添加新的月份记录,triggers,sqlite,Triggers,Sqlite,如果新月份不作为行存在,我需要在统计表中自动插入一行,该行由月号标识 “cards”是存储当前值(在翻滚时重置)、翻滚计数和该ID上所有事件的运行总数的单个ID的运行计数 '统计信息保存所有IDs事件的运行计数,以及给定月份发生的翻滚次数 CREATE TABLE IDS (ID_Num VARCHAR(30), Curr_Count INT, Rollover_Count INT, Total_Count INT); CREATE TABLE stats(Month char(10), Hit

如果新月份不作为行存在,我需要在统计表中自动插入一行,该行由月号标识

“cards”是存储当前值(在翻滚时重置)、翻滚计数和该ID上所有事件的运行总数的单个ID的运行计数

'统计信息保存所有IDs事件的运行计数,以及给定月份发生的翻滚次数

CREATE TABLE IDS (ID_Num VARCHAR(30), Curr_Count INT, Rollover_Count INT, Total_Count INT);
CREATE TABLE stats(Month char(10), HitCount int, RolloverCount int);
CREATE TRIGGER update_Tstats BEFORE UPDATE OF Total_Count ON IDS
WHEN 0=(SELECT HitCount from stats WHERE Month = strftime('%m','now'))
(还在WHEN子句的另一端尝试了一个“IS NULL”…仍然没有欢乐)

我确实让它工作到了一定程度,但由于滚动每个周期更新两次(值通过python脚本中的SQL查询上下变化),它在统计滚动计数中给了我加倍。现在我在脚本中运行一个双重查询。但是,如果统计表中不存在当前月数,则所有这些都将失效

我需要做的就是检查当前月份是否存在一条空白记录,以便python脚本更新查询运行,如果不存在,则插入一条。脚本本身无法在初始运行时执行“运行一次”类型的查询,因为它可能会运行数天,包括跨越新的月份转换


非常感谢您的帮助。

要检查记录是否存在,请使用exists:

CREATE TRIGGER ...
WHEN NOT EXISTS (SELECT 1 FROM stats WHERE Month = ...)
BEGIN
    INSERT INTO stats ...
END;

你知道吗,有时候你对一个问题看得太重,而看不到答案就在你面前?这是其中一次!这正是我在自己的问题中几乎要回答的……感谢CL的快速回复:-)
CREATE TRIGGER ...
WHEN NOT EXISTS (SELECT 1 FROM stats WHERE Month = ...)
BEGIN
    INSERT INTO stats ...
END;