Я пытаюсь создать хранимую процедуру для вставки новых записей в несколько дочерних таблиц (используя Greenplum). У меня есть основная таблица и набор дочерних таблиц. Я хотел бы вставить новые записи, которые есть в основной таблице, в дочерние таблицы (у меня около 20 дочерних таблиц). Я предполагаю, что я должен создать функцию, а затем триггер.
Обратите внимание, что я хочу вставить только некоторые поля в дочерние таблицы.
Я сделал несколько попыток, но вот последняя: (заранее извините, если выглядит очень плохо. Я никогда не создавал триггерных функций)
ФУНКЦИЯ:
CREATE OR REPLACE FUNCTION
schema1.newcustomerdata() RETURNS trigger AS $new_customer_data$
BEGIN
INSERT INTO schema1.customeridentifiers
(customer_id,
date_time)
SELECT NEW.customer_id,
date_time
FROM schema1.customersmaster
;
RETURN NEW;
END;
$new_customer_data$ LANGUAGE plpgsql;
ПУСК:
CREATE TRIGGER newcustomerdata
AFTER INSERT ON schema1.customersmaster
FOR EACH ROW EXECUTE PROCEDURE newcustomerdata();
Функция и триггер работают. Однако я больше не могу вставлять данные в основную таблицу.
Я получаю это сообщение об ошибке:
функция не может быть выполнена в сегменте, поскольку она выдает невыбранный оператор
Итак, мои вопросы:
- Каковы наилучшие решения для обновления дочерних таблиц?
- Что не так с моей функцией или триггером?
- Каковы ваши рекомендации?