数据库知识总结-触发器

举报
ftruezzq 发表于 2025/12/29 12:16:37 2025/12/29
【摘要】 create or replace function delete_ele_func returns trigger as $$ begin delete from elective where sno=old.sno; return old; end; $$ language plpgsql; 2 触发器 变量整理: 触发器函数里的OLD是一个特殊的记录型变量(Record Variabl...
create or replace function delete_ele_func returns trigger as $$ begin delete from elective where sno=old.sno; return old; end; $$ language plpgsql; 2 触发器 变量整理: 触发器函数里的OLD是一个特殊的记录型变量(Record Variable),它的核心作用是保存触发触发器的操作执行前,被影响行的原始数据。 2.1 例如 old DELETE FROM student WHERE sno = '2025001'; OLD就是student表中sno='2025001'的这一行的完整数据 2.2 对应关键词: old/new OLD变量在 DELETE/UPDATE 触发器中是只读的 new变量: UPDATE/INSERT(可以修改,例如大小写函数转换) 2.3 before/after 2.3.1 BEFORE触发器:触发操作(INSERT/UPDATE/DELETE)执行之前,先运行触发器函数,再执行原 SQL 操作。(写入/更新前作处理) 数据格式校验、自动补全默认值、强制修正非法数据等 2.3.2 AFTER触发器:触发操作(INSERT/UPDATE/DELETE)执行之后,再运行触发器函数。(写入/更新 之后作处理) 2.4 触发函数格式: 2.4.1 触发器函数 create or replace tri_func function() returns trigger AS $$ delcare begin delete from score where id=old.id; return old ; -- 删除之前先删除其他维度表的关联 , null代表 end; $$ language plsql; 2.4.2 创建触发器 create trigger tri_name before/after update of table1.col1 on table1 for each row execute procedure tri_func; 2.5 触发器其他操作: 1 禁用触发: alter table table1 disable trigger tri_name;/all 2 启动触发器: alter table table1 enable trigger tri_name 3 删除触发器: drop trigger tri_name on table1;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。