1

このエラーを修正する方法はありますか、それともコードに欠けているものがありますか、私は学習postgresqlしておりtable inheritance and triggers、2つのテーブルがtemporary_object tableありpersons table、個人テーブルは一時オブジェクトが持つすべてのプロパティを継承しています。私の問題は、これらを取得しようとid before updatingすると、同じレコードをチェックする人テーブルにトリガー関数を作成しましたtablesinsert queryerrors

ERROR: end of trigger procedure achieved without RETURN
CONTEXT: function PL / pgSQL muli_function ()

ERROR: end of trigger procedure achieved without RETURN
SQL-state: 2F005
Context: The PL / pgSQL muli_function ()

これは挿入クエリによるものです

INSERT INTO persons (id, time_create, time_dead, First_name, Last_name) values (1, '2011-10-07 15:25:00 EDT', '2011-10-07 3:25 PM EDT', 'sathiya', 'james');

これは私のトリガー関数であり、トリガー自体です

CREATE FUNCTION muli_function() RETURNS trigger AS '
BEGIN
  IF tg_op = ''UPDATE'' THEN
     UPDATE persons
     SET time_dead = NEW.time_create
     Where
         id = NEW.id
         AND time_dead IS NULL
         ;
  RETURN new;
  END IF;
END
' LANGUAGE plpgsql;

CREATE TRIGGER sofgr BEFORE INSERT OR DELETE OR UPDATE
        ON persons FOR each ROW
        EXECUTE PROCEDURE muli_function();

これらは私の2つのテーブルクエリです

CREATE TABLE temporary_object
(
  id integer NOT NULL,
  time_create timestamp without time zone NOT NULL,
  time_dead timestamp without time zone,
  PRIMARY KEY (id, time_create)
);

CREATE TABLE persons
(

  First_Name text,
  Last_Name text
)
INHERITS (temporary_object);
4

2 に答える 2

1

トリガーのトリガー プロシージャを定義しますが、 (mu が短すぎるとコメントされているように)INSERT OR UPDATEのケースは指定せず、 . したがって、トリガーは のプロシージャを実行しますが、実行するものが見つからず、 なしで終了します。これは明らかにエラーです。INSERTUPDATEINSERTRETURN

于 2012-12-07T08:35:16.270 に答える