我正在学习如何通过创建博客进行编程,我的一个要求就是在创建新博客帖子时增加帖子类别的“计数”列。
就目前而言,我必须使用以下语句来完成此任务:
INSERT INTO posts (..., ..., category_id) VALUES (..., ..., 5);
UPDATE categories SET count = count + 1 WHERE id = 5
我有什么方法可以将这两者合并为一个SQL语句?如果没有,每当我创建一个具有该类别的新帖子时,有没有办法“自动化”计数字段的增量?
答案 0 :(得分:2)
您无法组合这些语句,因为它们在不同的表上执行两种不同的操作。但是将它们包装在事务中有效地使它们成为一个原子伪单一语句:
start transaction;
insert into posts blah blah blah;
update categories blah blah blah;
commit;
您可以使用posts表上的触发器更新thigns。无论何时插入或删除记录,您都有触发器运行更新查询。
答案 1 :(得分:1)
您可以使用trigger自动执行此操作。
CREATE TRIGGER myPostsTrigger AFTER INSERT
ON posts
FOR EACH ROW
BEGIN
UPDATE categories SET count = count + 1 WHERE id = NEW.category_id
END
然后,当您在帖子(INSERT INTO posts (..., ..., category_id) VALUES (..., ..., 5);
)中插入一行时,它会自动增加您的点数。