0

次の質問があります。たとえば、次の表があります。

CREATE TABLE "regions" (gid serial PRIMARY KEY,
"__gid" int8,
"name" varchar(20),
"language" varchar(7),
"population" int8);

そして、いくつかのレコードを挿入したいのですが、「名前」の値の 1 つが「B」であるとします。「B」を「English-Speaking」に変更するには、どのようなコードを書かなければなりませんか? それはある種のトリガーで行われますか?では、挿入時に値を自動的に変更するトリガーを作成する必要がありますか? どんな助けでも大いに感謝します!!!

4

2 に答える 2

1

これは、この場合、あなたが望むことを行うUPDATE ステートメントです。

UPDATE regions set name = 'English-Speaking' where name = 'B';

これを関数に入れるには、次のようなものを使用します。

CREATE OR REPLACE FUNCTION  insert_into_wgs()
RETURNS void AS
$$
BEGIN
UPDATE regions SET name = 'English-Speaking' WHERE name = 'B';
END
$$
LANGUAGE 'pgpsql';

次に、この関数を実行するトリガーを作成します。

CREATE TRIGGER log_update
    AFTER UPDATE ON accounts
    FOR EACH ROW
    WHEN (OLD.* IS DISTINCT FROM NEW.*)
    EXECUTE PROCEDURE
    insert_into_wgs();
于 2013-05-10T03:59:15.493 に答える
0

あなたの説明からあなたが何を意味するかを正しく推測したと仮定します:

PL/ PgSQLBEFORE INSERT OR UPDATE ... FOR EACH ROW EXECUTEトリガー プロシージャを呼び出してNEWレコードの値を変更し、RETURN NEW.

ドキュメントには豊富な詳細が含まれています。これは宿題であるため、完全な例を提供するつもりはありません。PL/pgSQL トリガー プロシージャCREATE TRIGGERから始めます。

于 2013-05-10T04:11:03.620 に答える