PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

38.5. 数据库登录事件触发器示例 #

利用 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();