2017-06-08 4 views
2

私は現在、私がテーブル "Person"内のカラム "lastedit"を更新するトリガを構築しようとしているところでプロジェクトに取り組んでいます。トリガー作成で指定されたスキーマ(この場合はCertifications)の表に最後に変更が加えられたときのタイムスタンプ。PostgreSQLでトリガを作成すると "function does not exist"エラーが発生する

私の問題は、関数 "update_lastedit()"を作成した後でトリガーを作成しようとすると、その関数が存在しないというエラーが表示されることです。私はどこかで私の機能に不一致があるかもしれないと思うが、私はそれを見つけることができない。

私のうちからお手伝いできますか?私はPostgreSQL 9.5.5を実行しています。より広範な説明をする必要がある場合は、私に教えてください。これは私の最初の質問ですので、重要なことを見落としている可能性があります。

マイトリガーするためのコードと機能は以下の通りである:

CREATE OR REPLACE FUNCTION update_lastedit() RETURNS TRIGGER AS 
$update_edit$ 
BEGIN 
    UPDATE ovsoftware.person 
    SET lastedit = now(); 
END; 
$update_edit$ 
LANGUAGE plpgsql; 

CREATE TRIGGER cert_edit_trigger 
    BEFORE INSERT OR UPDATE ON ovsoftware.certifications 
    FOR EACH ROW 
    EXECUTE PROCEDURE update_lastedit(); 

正確なエラー:

SQL fout: 

ERROR: function update_lastedit() does not exist 
In statement: 

CREATE TRIGGER cert_edit_trigger 
    BEFORE INSERT OR UPDATE ON ovsoftware.certifications 
    FOR EACH ROW 
    EXECUTE PROCEDURE update_lastedit(); 
+0

正確なエラーで投稿を更新してください - あなたの提供されたコードサンプルはOKです –

+0

完了しました。フィードバックに感謝します! –

+0

ちょうど確かめる - それらがポストで提示される順序とは違って、あなたはトリガーを作成しようとする前に関数を作成します、そうですか? – Mureinik

答えて

1

溶液は、完全修飾を使用することでした次のように関数の名前:ovsoftware.update_lastedit()。私は他の場合にそうする必要はなかったので、なぜそうであるかわからない。 いずれにしても、スコープには明らかにovsoftwareスキーマが含まれていないため、エラーにつながります。

関連する問題