Я работаю в PostgreSQL, используя триггер. У меня есть 2 таблицы здесь, invoice_items и счет-фактура. В таблицу 'invoice' данные вставляются из системы, затем таблица 'invoice_items' заполняется с помощью триггера, чтобы получить значения из вставленных данных таблицы 'invoice'. Каждая вставка из системной системы состоит из двух строк, подобных этой:
таблица «накладная»:
id invoice_date statement amount
1 2018-10-03 Insert 5
2 2018-10-03 Update 6
затем таблица 'invoice_items' после триггера вставляет данные счета:
id total statement
1 5 Insert
2 6 Update
Триггер:
create trigger do_fetch
after insert
on invoices
for each row
execute procedure insert_amount();
функция insert_amount ():
create function insert_amount()
returns trigger
language plpgsql
as $$
BEGIN
INSERT INTO invoice_items (total, statement) VALUES (new.amount, new.statement);
return null;
END;
$$;
Но я просто хочу получить последние вставленные данные «счетов-фактур», чтобы вызвать «invoice_items» для достижения такого результата:
id invoice_date statement amount
1 2018-10-03 Insert 5
2 2018-10-03 Update 6
id total statement
1 6 Update
Я попытался изменить триггер на это:
create constraint trigger do_fetch
after insert
on invoices
deferrable
for each row
execute procedure insert_amount();
но я все еще вставляю 2 строки в таблицу 'invoice_items' - не только последняя строка, какая-либо подсказка? Спасибо