sách gpt4 ai đã đi

Đánh giá Postgresql LISTEN/NOTIFY

In lại 作者:行者123 更新时间:2023-11-29 12:43:15 25 4
mua khóa gpt4 Nike

我创建了以下触发器来跟踪 postgres 表上的所有更改。

DROP TRIGGER tr_request_update_notify ON requests;

CREATE OR REPLACE FUNCTION request_update_notify() RETURNS trigger as $$
BEGIN
PERFORM pg_notify('request_update_notify', json_build_object('table', TG_TABLE_NAME, 'id', NEW.id, 'event', NEW.event, 'type', TG_OP)::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;


CREATE TRIGGER tr_request_update_notify AFTER UPDATE or INSERT ON requests FOR EACH ROW EXECUTE PROCEDURE request_update_notify();

另一个应用程序将监听连接并对每个事件应用适当的处理。

如果事件发生并且我的应用程序未启动,则永远不会处理该事件。有没有办法回顾所有错过的通知?

1 Câu trả lời

通知不会存储在任何地方,它们只会发送到在同一通知 channel 上监听的任何 session 。但是看到您在数据库中,为什么不将通知存储在表中,然后监听器在事件时只需轮询该表。然后,您还可以直接使用 json 而不是将其转换为 chữ。不像 NOTIFY/LISTEN 那样“自动”,但在其他方面非常简单。

CREATE OR REPLACE FUNCTION request_update_notify() RETURNS trigger as $$
BEGIN
INSERT INTO my_notifications (channel, message_time, notification)
VALUES ('request_update_notify', CURRENT_TIME,
json_build_object('table', TG_TABLE_NAME,
'id', NEW.id,
'event', NEW.event,
'type', TG_OP)
);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

关于Postgresql LISTEN/NOTIFY 回顾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521517/

25 4 0
Bài viết được đề xuất: sql - 替换 SQL 中的空白值和空值
Bài viết được đề xuất: php - mysql 查询输出显示计数的数据表
Bài viết được đề xuất: java - 使用 JPA 为 Wildfly 构建 Java Web 应用程序失败?
Bài viết được đề xuất: POSTGRESQL 无法比较空列
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com