我正在尝试创建一个触发器,如果属性news包含“新冠肺炎”或“冠状病毒”,或者属性title包含“乌克兰”或"Rusia“(如果属性title包含"War"),则在表news上的每次插入之后,title将按news对数据库中的某些news进行分类。
这些表格的结构如下:
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;如何正确地开发这个子查询,或者根据不同的条件执行不同的插入?
发布于 2022-04-21 18:10:37
正确使用CASE表达式中的运算符CASE:
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;请参阅简化的演示。
https://stackoverflow.com/questions/71958909
复制相似问题