Postgresql uygulamasında yeniyim ve başvurumu MySQL'den geçirmeye çalışıyorum.
Aşağıdaki yapıya sahip bir tablo vardır:Postgresql'deki garip davranış
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
I libpq kullanılarak C program sorgu çalıştırmak:
ERROR: record "new" has no field "last_update"
CONTEXT: PL/pgSQL function "update_tbl_point" line 3 at assignment
:
UPDATE tbl_point SET "Execute"=0 WHERE "Tag_Id"=0
Aşağıdaki çıkış var "Execute" veya pgAdminIII kullanarak başka bir sütunun değerini değiştirmeye çalıştığımda tam olarak aynı hatayı alıyorum.
"Last_Update" ile "last_update" arasındaki sütun adını değiştirirseniz her şey iyi çalışır.
Veritabanımdaki diğer tablolarda da aynı sorunu buldum ve sütun her zaman abstime veya zaman damgası sütunlarıyla görünüyor.
new.last_update = current_timestamp;
ama o kadar tetik işlevini düzeltmek new."Last_Update"
kullanarak edilmelidir:
Teşekkür ederim arkadaşım! Açıklamanız kusursuzdu! Alexandra. – user1131031