2016-10-23 232 views
2

以下のトリガを作成し、関数を更新する関数を作成しました。 'frm'と 'トリガ機能では、 『タイムゾーンなしのタイムスタンプ』タイプのPostgreSQL:演算子が存在しません:タイムゾーンなしのタイムスタンプ==タイムゾーンなしのタイムスタンプ

ている私は、私は、PostgreSQL

ERROR: operator does not exist: timestamp without time zone == timestamp without time zone

にエラー下回っ取得しています更新クエリを実行した後、これらの二つの列

CREATE OR REPLACE FUNCTION ff() RETURNS TRIGGER AS $$ 
BEGIN 
    if((old."frm" == New."frm") and (old."upto" == New."upto")) then 
     insert into TG_TABLE_NAME (select * from inserted); 
     New."from" := old."from"; 
     NEW."upto" := current_timestamp; 
     RETURN NEW; 
    END IF; 
    RETURN NULL; 
END $$ LANGUAGE plpgsql; 

create trigger update_trig2 after update on dd 
for each row execute procedure ff();` 

の更新をチェックしていた」点で最大

+2

==を交換する必要があり、比較演算子は、 ' '=''、ない ' '==''です。 – wildplasser

+0

私が覚えているように、 'Pascal'言語に基づいた' Ada'言語に基づいてOracleによって最初に設計された 'plsql'言語。したがって、代入演算子は ':='で、等価演算子は '='です(しかし、不等式演算子は '<>'と '!='の両方になります) – Abelisto

+0

これはうまくいきましたが、以下のエラーがありました ERROR :relation "tg_table_name"は存在しませんLINE 1:TG_TABLE_NAMEに挿入してください(挿入から選択) TG_TABLE_NAMEがトリガーを呼び出すテーブルを参照する正しい方法ではない場合は教えてください。 –

答えて

4

SQLとPL/pgSQLの比較演算子は=です。

だから、=

+0

エラー:relation "tg_table_name"が存在しません LINE 1:TG_TABLE_NAMEに挿入してください(選択したものから) –

+0

TG_TABLE_NAMEがpostgresql 9.4.4でトリガを呼び出すテーブルを参照する正しい方法ではない場合は教えてください。 –

+2

これについて別の質問をしてください。また、あなたの元の質問に答えたので、正解とマークしてください。 –

関連する問題