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



我试图创建一个触发器,如果属性title包含"COVID-19",则在表news上每次插入之后,通过category对数据库中的一些news进行分类。或";coronavirus"(那么类别id应该是名称为"covid -19"的类别id)或者如果属性title包含"Ukraine"或";Rusia"(那么类别id应该是名称为"War"的)。

表的结构如下:

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;

相关内容

  • 没有找到相关文章

最新更新