<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>触发器 on 老张开工了</title>
    <link>/%E8%A7%A6%E5%8F%91%E5%99%A8/</link>
    <description>Recent content in 触发器 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 23 Feb 2025 10:00:00 +0800</lastBuildDate>
    <atom:link href="/%E8%A7%A6%E5%8F%91%E5%99%A8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>触发器与事件</title>
      <link>/posts/2025/02/triggers-and-events/</link>
      <pubDate>Sun, 23 Feb 2025 10:00:00 +0800</pubDate>
      <guid>/posts/2025/02/triggers-and-events/</guid>
      <description>触发器让数据库在特定事件（INSERT、UPDATE、DELETE）发生时自动执行函数，是维护数据完整性和实现自动化逻辑的强大工具。&#xA;触发器基础 创建触发器的流程 -- 1. 先创建一个触发器函数（返回 TRIGGER 类型） CREATE OR REPLACE FUNCTION trigger_function() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN -- 逻辑代码 RETURN NEW; -- 或 RETURN OLD，或 RETURN NULL END; $$; -- 2. 将函数绑定到表上 CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE | TRUNCATE} ON table_name [FOR EACH {ROW | STATEMENT}] EXECUTE FUNCTION trigger_function(); 新旧数据的含义 场景 OLD NEW INSERT NULL 新插入的行 UPDATE 更新前的行 更新后的行 DELETE 被删除的行 NULL 实战：自动更新时间戳 这是最常用的触发器——自动维护 updated_at 列：</description>
    </item>
  </channel>
</rss>
