1

私はpostgresに取り組んでいます。トリガー内に再度書き込むことなく、呼び出し元のクエリをトリガー内で実行する簡単な方法があるかどうかはわかります。私は自分自身を説明しています。テーブルに対する INSERT クエリと、BEFORE INSERT を実行するトリガーがあります。条件が検証された場合、トリガー内で書き換えずにクエリを実行します (NEW 変数を使用)。

4

2 に答える 2

1

あなたの質問を正しく理解できたら、次のことを試してください。

IF (condition) THEN  
    RETURN new;
ELSE  
    -- statements
END IF;  

オズヴァルド

于 2013-07-21T16:29:27.510 に答える
0

それはあなたが持っているクエリに依存しますが、関数を使用してその中にクエリを書くことができます:

create table test (number int);

CREATE OR REPLACE FUNCTION fn_test_insert("number" integer)
RETURNS void AS
$BODY$
insert into test (number) -- this is your insert query
    select $1
$BODY$
LANGUAGE sql;

CREATE OR REPLACE FUNCTION tr_fn_test_insert()
RETURNS trigger AS
$BODY$
begin
perform fn_test_insert(new.number + 1); -- calling your insert query with new + 1
    return new;                         -- as example
end
$BODY$
LANGUAGE plpgsql;

CREATE TRIGGER tr_test_insert
AFTER INSERT
ON test
FOR EACH ROW
WHEN ((new.number < 10))
EXECUTE PROCEDURE tr_fn_test_insert();

select fn_test_insert(1);
于 2013-07-21T17:19:59.077 に答える