Триггер postgres не работает должным образом - аргумент id не передан правильно в новую таблицу - PullRequest
0 голосов
/ 24 мая 2018

для следующего триггера в постах:

trigger vehicle_history
before update
 on public.vehicle
 for each row 
EXECUTE PROCEDURE public.log_vehicle_history()

с функцией ниже:

function log_vehicle_history()
    returns trigger as 
$BODY$ BEGIN
IF NEW.lastupdated <> OLD.lastupdated THEN
INSERT INTO vehiclehistory(vehicle_id, event, datetime, latitude, longtitude, speed) 
VALUES(OLD.id, OLD.lastevent, OLD.lastupdated, OLD.latitude, OLD.longtitude, OLD.speed);
END IF;
RETURN NEW;
END;
$BODY$ 
language PLPGSQL volatile
cost 100;
alter function log_vehicle_history() owner to postgres;

Я получаю следующую ошибку:

2018-05-23 23:06:08.435 ERROR 12492 --- [       Thread-7] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: null value in column "id" violates not-null constraint
  Details: Failing row contains **(null, 2018-05-23 13:07:53, 0, 34.221820000000001, 108.88527999999999, null, 8)**.
  Where: SQL statement "INSERT INTO vehiclehistory(vehicle_id, event, datetime, latitude, longtitude, speed) 
VALUES(OLD.id, OLD.lastevent, OLD.lastupdated, OLD.latitude, OLD.longtitude, OLD.speed)"
PL/pgSQL function log_vehicle_history() line 3 at SQL statement

Для некоторыхпричина во всех значениях отсутствует только id - (null, 2018-05-23 13:07:53, 0, 34.221820000000001, 108.88527999999999, null, 8) .Является ли id каким-то ключевым словом в postgres?Как это исправить?

Таблицы:

select
    v.datetime,
    v."event",
    v."id",
    v.latitude,
    v.longtitude,
    v.speed,
    v.vehicle_id
from
    public.vehiclehistory v;

select
    v.gpsstatus,
    v."id",
    v.imei,
    v.ip,
    v.lastevent,
    v.lastupdated,
    v.latitude,
    v.licenceplate,
    v.longtitude,
    v."name",
    v.port,
    v.speed,
    v.user_id
from
    vehicle v;

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...