利用 login 事件触发器记录每个客户端会话登录时的初始状态:
CREATE TABLE login_history (
username text,
login_time timestamp with time zone DEFAULT current_timestamp,
client_ip inet
);
CREATE OR REPLACE FUNCTION log_login_event()
RETURNS event_trigger AS $$
BEGIN
INSERT INTO login_history (username, client_ip)
VALUES (session_user, inet_client_addr());
END;
$$ LANGUAGE plpgsql;
CREATE EVENT TRIGGER record_user_login
ON login
EXECUTE FUNCTION log_login_event();