2016-03-23 2 views
-2

テーブルを呼び出すときにAを更新し、Aの行数をカウントして別のテーブルの値を更新するトリガを作りたいそれは行われる?PGSQL:別のテーブルの行のトリガカウンタ

+0

あなたの努力を示すまで、何を試してみましたか? –

+0

私は非常にデータベースの作成に新しい、pgsqlには非常に新しいです、私はpostgresql.orgのドキュメントの後にトリガーを作成しようとしてきましたが、私は非常に手順を作成する方法はありません。私は、次のされたサンプルだった –

答えて

0

あり、完全なサンプルはここにある: 機能your_function_name(parameters_goes_here)を作成returned_data_type_or_trigger_for_triggersがAS string_value_with_body RETURNS;:あなたが提供することになっているストアドプロシージャを作成するには http://www.postgresql.org/docs/9.3/static/plpgsql-trigger.html

通常、セミコロンはコマンドを終了するため、bodyは入力できません。他のデータベースはコマンド区切り文字を変更します。 PGでは、特別な文字区切り記号のドル記号を使用できます。このトピックの詳細をお読みください: What are '$$' used for in PL/pgSQL

これは難しいです。トピックの投稿を数えましょう。 2つのトピックの間で投稿を移動します。カウンターがあるので、トピックが更新されます。これは、更新ロックを意味します。 2つのトピックの間で2つの同時投稿が移動した場合はどうなりますか?最初の移動は基本トピックをロックし、他のものを試します。そして同じことが他のものにも起こります。 :D それに対処するには、両方が同じものであることを確認する必要があります。たとえば、トピックごとにIDをソートし、最初に選択します。

+0

が、私はこのコード CREATE OR REPLACE FUNCTIONのcontar_formar() RETURNSが$ UPDATEのEQUIPOSのSETのnumeromiembrosをBEGIN $ BODY ASトリガーを作っ=(COUNT(*)を選択FROM formar)WHERE idequipo = (SELECT equipo FROM formar); END; $ BODY $ LANGUAGE plpgsql VOLATILE コスト100; 変更機能contar_formar() 投稿者に投稿する; 私はformarで何かを挿入しようとすると、その、動作していない、それは エラーが発生していると言う:、PL/pgSQLの関数contar_formar() –

+0

を解決: ERROR:コントロールRETURN CONTEXTせずにトリガプロシージャの最後に到達します終了する前にRETURN NULLを追加しなければならなかった、助けてくれてありがとう! –

関連する問題