Search Postgresql Archives

Re: How to check if a field exists in NEW in trigger

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/4/19 3:52 PM, Igal @ Lucee.org wrote:
I have the following statement in a trigger:

     new.email = lower(new.email);

When I try to update a record without setting the email column however,

Do you mean:

1) There is no actual email column?

2) There is an email column but no value for it?



I get an error:

SQL Error [42703]: ERROR: record "new" has no field "email"
   Where: SQL statement "SELECT lower(new.email)"
PL/pgSQL function on_record_modified() line 26 at assignment

Is:

on_record_modified()

a generic function that will be applied to many tables with differing schema?


I have seen some hacks suggesting TRY/CATCH or converting to a JSON and checking if the field exists, but I would think that there's a better way to check if the field is in the NEW record, no?

Use

TG_RELID

and look up the columns in:

https://www.postgresql.org/docs/11/catalog-pg-attribute.html

Or use the columns information_schema:

https://www.postgresql.org/docs/11/infoschema-columns.html


Any ideas?  Thanks!

Igal Sapir
Lucee Core Developer
Lucee.org <http://lucee.org/>



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux