Postgresql

postgresql 中的觸發器函式中缺少表的 FROM 子句條目

  • March 7, 2018

我為表“product”創建了一個審計觸發器,應該將數據插入到“log_product”中。

CREATE FUNCTION public.insert_log_product()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF 
ROWS 0
AS $BODY$
BEGIN
IF (TG_OP = 'UPDATE')
THEN
   INSERT INTO log_table(
     operation,
     product_type_new, 
     product_type_old,
     product_name_new,
     product_name_old,
     vendor_id,
     available_quantity_unit_new,
     available_quantity_unit_old,
     delivery_time_in_days_new,
     delivery_time_in_days_old,
     change_date
   )
   VALUES(
     'UPDATE',
     new.product_type,
     old.product_type,
     new.product_name,
     old.product.name,
     new.vendor_id,
     old.vendor_id
     new.available_quantity_unity,
     old.available_quantity_unity,
     new.delivery_time_in_days,
     old.delivery_time_in_days,
     now()
   );

END IF;
RETURN NULL;
END;

$BODY$;

但我收到一條錯誤消息:

org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry for table "product"

該函式是使用 PGadmin 4.2 創建的。

CREATE TRIGGER insert_log_product_trigger
AFTER INSERT OR DELETE OR UPDATE 
ON public.table
FOR EACH ROW
EXECUTE PROCEDURE public.insert_log_product();

我們的審計表的要求是將每一列分開,新舊。

您正在嘗試將 42 個值插入 41 列。檢查 vendor_legal_id。

引用自:https://dba.stackexchange.com/questions/199478