私はPostgresqlを初めて使用し、MySQLからアプリケーションを移行しようとしています。
次の構造のテーブルがあります。
Table "public.tbl_point"
Column | Type | Modifiers | Storage | Description
------------------------+-----------------------+-----------+----------+-------------
Tag_Id | integer | not null | plain |
Tag_Name | character varying(30) | not null | extended |
Quality | integer | not null | plain |
Execute | integer | not null | plain |
Output_Index | integer | not null | plain |
Last_Update | abstime | | plain |
Indexes:
"tbl_point_pkey" PRIMARY KEY, btree ("Tag_Id")
Triggers:
add_current_date_to_tbl_point BEFORE UPDATE ON tbl_point FOR EACH ROW EXECUTE PROCEDURE update_tbl_point()
Has OIDs: no
libpqを使用してCプログラムでクエリを実行すると、次のようになります。
UPDATE tbl_point SET "Execute"=0 WHERE "Tag_Id"=0
次の出力が得られました。
ERROR: record "new" has no field "last_update"
CONTEXT: PL/pgSQL function "update_tbl_point" line 3 at assignment
pgAdminIIIを使用して「実行」または他の列の値を変更しようとすると、まったく同じエラーが発生します。
列名を「Last_Update」から「last_update」に変更すると、すべて正常に機能します。
データベースにある他のテーブルでも同じ問題が見つかりました。列は常にabstime列またはtimestamp列で表示されます。