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