H Michael,
Please see insert_info function below. Also r_log_message is composite data
type and it's definition is also given below.

CREATE OR REPLACE FUNCTION insert_info(
    info_array  r_log_message[]
) RETURNS varchar AS $$
    DECLARE
        info_element  r_log_message;
    BEGIN
        FOREACH info_element IN ARRAY info_array
        LOOP
            INSERT INTO testaditya(
                columname,
                oldvalue,
                newvalue
            ) VALUES(
                info_element.column_name,
                info_element.oldvalue,
                info_element.newvalue
            );
        END LOOP;
        RETURN 'OK';
    END;
$$ LANGUAGE plpgsql;


postgres=# \d r_log_message;
                 Composite type "public.r_log_message"
   Column    |          Type           | Collation | Nullable | Default
-------------+-------------------------+-----------+----------+---------
 column_name | character varying(30)   |           |          |
 oldvalue    | character varying(4000) |           |          |
 newvalue    | character varying(4000) |           |          |

Regards,
Aditya.



On Wed, Nov 24, 2021 at 12:16 PM Michael Lewis <mle...@entrata.com> wrote:

> It seems like that function has some syntax errors, and also doesn't do
> what you want since I presume the "from employee" bit would mean you get
> many rows inserted into that temp table for all the existing data and not
> the one row you are operating on at the moment the trigger fires.
>
> It is worth noting also that if bulk operations are at all common for this
> table then writing this as an after statement trigger will likely be
> helpful for performance.
>
> For full context, we'd need to see how the function insert_info is defined.
>

Reply via email to