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.
我正在尝试创建一个触发器,在 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.