Как использовать функцию BEGIN в функции триггера в POSTGRESQL - PullRequest
0 голосов
/ 25 сентября 2019

Я использую POSTGRESQL-10 и пытаюсь создать функцию TRIGGER.

Я следовал примеру из этого урока *http://www.postgresqltutorial.com/creating-first-trigger-postgresql/ * Итак, я создал таблицу:

CREATE TABLE employee_audits (
   id SERIAL PRIMARY KEY,
   employee_id INT NOT NULL,
   last_name VARCHAR(40) NOT NULL,
   changed_on TIMESTAMP(6) NOT NULL
)

Затем я хотел создать следующий триггер:

CREATE OR REPLACE FUNCTION log_last_name_changes()
  RETURNS trigger AS
$BODY$
BEGIN
   IF NEW.last_name <> OLD.last_name THEN
       INSERT INTO employee_audits(employee_id,last_name,changed_on)
       VALUES(OLD.id,OLD.last_name,now());
   END IF;

   RETURN NEW;
END;
$BODY$

Однако, когда я попытался выполнить эту функцию, PostgreSQL вернул мне ошибку синтаксиса из-за НАЧАЛА.

Любойшанс, кто-нибудь может мне помочь выяснить проблемы, пожалуйста?

1 Ответ

0 голосов
/ 25 сентября 2019

Вы пропустили обязательное условие LANGUAGE в указанной вами функции, но, скорее всего, вы сказали

LANGUAGE sql

вместо

LANGUAGE plpgsql

Валидатор языка процедурного языкаВы указали, не распознает BEGIN в начале тела функции.

...