0

我正在通过创建博客来学习如何编程,我的要求之一是每当创建新的博客文章时增加文章类别的“计数”列。

至于现在,我必须使用以下语句来完成此任务:

INSERT INTO posts (..., ..., category_id) VALUES (..., ..., 5);
UPDATE categories SET count = count + 1 WHERE id = 5

我有什么办法可以将这两者组合成一个 SQL 语句?如果没有,有没有办法在我创建具有该类别的新帖子时“自动”增加计数字段?

4

2 回答 2

2

您不能组合这些语句,因为它们在不同的表上执行两种不同的操作。但是将它们包装在事务中有效地使它们成为原子伪单语句:

start transaction;
insert into posts blah blah blah;
update categories blah blah blah;
commit;

您可以通过在帖子表上使用触发器来更新 thigns。任何时候插入或删除一条记录,您都会让触发器运行更新查询。

于 2012-07-11T19:22:48.240 回答
1

您可以使用触发器自动执行此操作。

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);,它会自动增加您的计数。

于 2012-07-11T19:27:15.493 回答