Как я могу получить обновленные, созданные или ошибочные данные после вставки в таблицу? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть много объектов, которые нужно вставить в таблицу.После вставки может быть три варианта: создан, обновлен и не выполнен.Похоже, upsert, но мне нужен подробный результат.Я пытался использовать on_conflict_do_update, но тогда я не узнаю, какие из них были обновлены, созданы и не удалось.Я действительно не хочу использовать итерацию и обрабатывать каждый элемент в блоке исключений, может быть, у вас будет несколько вариантов?

1 Ответ

0 голосов
/ 23 апреля 2019

Что вы хотите сделать с информацией?Один из способов сделать это - использовать триггеры Postgres, которые выполняют определенные действия при вставке или обновлении строки.Определите триггер, который выполняет функцию перед вставкой или обновлением таблицы.Обработайте то, что вы хотите сделать с созданными / обновленными данными в функции триггера.

CREATE FUNCTION handle_modify() RETURNS trigger AS $modify$
   BEGIN
      IF TG_OP='INSERT' THEN
         --do something with created data NEW.data
      END IF;
      IF TG_OP='UPDATE' THEN
         --do something with updated data NEW.data or OLD.data
      END IF;

   END
$modify$ LANGUAGE plpgsql;

CREATE TRIGGER modify AFTER INSERT OR UPDATE ON your_table
    FOR EACH ROW EXECUTE PROCEDURE modify();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...