进阶数据库系列:PostgreSQL 视图与触发器
-- 创建一个简单的视图,展示用户表和用户详情表的内连接结果
CREATE VIEW user_activity AS
SELECT
u.id AS user_id,
u.name AS user_name,
u.email AS user_email,
ud.last_login AS last_login,
ud.last_ip AS last_ip
FROM users u
INNER JOIN user_details ud ON u.id = ud.user_id;
-- 创建一个简单的BEFORE INSERT触发器,用于在插入数据到用户表前,记录操作
CREATE FUNCTION log_user_insert() RETURNS TRIGGER AS $$
BEGIN
-- 假设存在一个名为audit_log的表用于记录日志
INSERT INTO audit_log(user_id, action, timestamp) VALUES (NEW.id, 'INSERT', now());
RETURN NEW; -- 返回新插入的数据行
END;
$$ LANGUAGE plpgsql;
-- 绑定触发器到用户表的INSERT事件
CREATE TRIGGER trigger_user_insert
BEFORE INSERT ON users
FOR EACH ROW EXECUTE FUNCTION log_user_insert();
这个例子展示了如何在PostgreSQL中创建视图、函数和触发器。视图用于简化查询,函数用于记录操作,触发器则在用户表上插入操作时自动执行函数。这种结构可以用于数据库的审计和监控。
评论已关闭