我试图创建一个触发器,如果属性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;