0

ブログを作成してプログラミングの方法を学んでいますが、必要な要件の 1 つは、新しいブログ投稿が作成されるたびに投稿カテゴリの「カウント」列を増やすことです。

今のところ、このタスクを達成するには、次のステートメントを使用する必要があります。

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

これら 2 つを 1 つの SQL ステートメントに結合する方法はありますか? そうでない場合、そのカテゴリで新しい投稿を作成するたびにカウント フィールドの増分を「自動化」する方法はありますか?

4

2 に答える 2

2

異なるテーブルに対して 2 つの異なる操作を実行しているため、ステートメントを結合することはできません。しかし、それらをトランザクションで効果的にラップすると、アトミックな疑似単一ステートメントになります。

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

posts テーブルでトリガーを使用して、物事を更新できます。レコードが挿入または削除されるたびに、トリガーで更新クエリを実行します。

于 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 に答える