172 похожих чатов

Всем хорошего вечера. Ребят, подскажите. Вот есть у меня функция триггера CREATE

FUNCTION update_firebase_logs() RETURNS trigger AS $update_firebase_logs$
BEGIN
-- Проверить, что указаны имя сотрудника и зарплата
IF NEW.processed_at IS not NULL THEN
insert into firebase_log_new(created_at, message, processed_at) values(new.*);
RETURN NULL;
END IF;
RETURN NEW;
END;
$update_firebase_logs$ LANGUAGE plpgsql;

CREATE TRIGGER trigger_insert_firebase_logs
before INSERT ON firebase_log
FOR EACH ROW
EXECUTE FUNCTION update_firebase_logs();

Т.е. при добавлении данных в одну таблицу - идёт проверка на NULL, в случае, если не NULL - данные записываются в другую таблицу
Да, всё работает, всё круто

Теперь возник вопрос второй
Как как правильно подключить эту фукнцию так, чтобы при обновлении таблицы ( в случае, когда поле после обновления будет не NULL) - данные перекидывались в другую таблицу

Проблему решил так:
CREATE TRIGGER trigger_update_firebase_logs
after UPDATE ON firebase_log
FOR EACH ROW
EXECUTE FUNCTION update_firebase_logs();

Но она оставляет старые строки в таблице

Т.е. при обновлении нужно удалить старую строку, а новую запихнуть в другую таблицу.
Мб подскажите что?

8 ответов

2 просмотра

Написать другую триггерную функцию (для BEFORE UPDATE), которая делает то, что нужно.

Егор-miruzzy Автор вопроса
Yaroslav Schekin
Написать другую триггерную функцию (для BEFORE UPD...

Всё же не получается сообразить Что должна возвращать такая функция в случае, когда надо строку удалить ?

Егор miruzzy
Всё же не получается сообразить Что должна возвращ...

NULL и выполнять DELETE, казалось бы. А что, не получается?

Егор-miruzzy Автор вопроса
Yaroslav Schekin
NULL и выполнять DELETE, казалось бы. А что, не по...

А можно как-то выполнить DELETE старой строки, если в таблице нет OID и поля могут быть не уникальны ( ну прям вот одинаковые все поля у нескольких строк ) ?

Егор miruzzy
А можно как-то выполнить DELETE старой строки, есл...

Во-первых, такую модель нужно сразу выкинуть переделать. Во-вторых, а сами-то Вы как можете знать, какую из строк нужно удалить (см. "во-первых")?

Егор miruzzy
Всё же не получается сообразить Что должна возвращ...

Нельзя удалить строку в таблице в триггере на эту таблицу вроде?)

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта