SQLite 在触发器的子查询中使用 NEW

SQLite using NEW in subquery in a trigger

我正在尝试创建一个触发器,在 table news 上每次插入后,如果属性 title 包含“COVID-19”或“冠状病毒”(则类别 ID 应为名称为“COVID-19”的类别 ID),或者如果属性 title 包含“乌克兰”或“俄罗斯”(则类别 ID 应该是名称为“War”的类别 ID。

table的结构如下:

news (id, title, text, date, user(FK))
category (id, name, description)
new_cat(news(FK), category(FK))

我尝试实施以下触发器但没有成功:

CREATE TRIGGER news_categorizer AFTER INSERT ON news
FOR EACH ROW
BEGIN
    INSERT INTO new_cat (news, category) VALUES (NEW.id, 
    (SELECT id from category WHERE name = "COVID-19" AND (NEW.title = "%COVID-19%" or NEW.title = "%coronavirus%")));
END;

我怎样才能正确开发这个子查询,或者我能否根据条件执行不同的 INSERT?

CASE 表达式中正确使用运算符 LIKE

CREATE TRIGGER news_categorizer AFTER INSERT ON news
FOR EACH ROW
BEGIN
    INSERT INTO new_cat (news, category) 
    SELECT NEW.id, 
           id 
    FROM category 
    WHERE name = CASE
      WHEN (NEW.title LIKE '%COVID-19%') OR (NEW.title LIKE '%coronavirus%') THEN 'COVID-19'
      WHEN (NEW.title LIKE '%Ukraine%') OR (NEW.title LIKE '%Rusia%') THEN 'War'
    END;
END;

查看简化版 demo.