当前位置: 首页 > news >正文

做java的源码网站品牌定位

做java的源码网站,品牌定位,山东农业大学学风建设专题网站,常用企业网站模板对比本文章代码已在pgsql11.22版本上运行且通过,展示页由pgAdmin8.4版本提供 上一篇总结了原著的第十章有关pgsql的视图的用法,本篇将总结pgsql的触发器的用法。 触发器 使用触发器可以自动化完成一些在插入数据或修改数据时,某些需要同期同步的…

本文章代码已在pgsql11.22版本上运行且通过,展示页由pgAdmin8.4版本提供

上一篇总结了原著的第十章有关pgsql的视图的用法,本篇将总结pgsql的触发器的用法。

触发器

        使用触发器可以自动化完成一些在插入数据或修改数据时,某些需要同期同步的数据的工作。例如,期望在进行增加新一行数据时,把插入时的“插入时间”进行同步的功能,在我进行sql代码编写时,因为已经提早就做好了触发器,我只需要填充其他所需的数据,不用再去写“插入时间”这一列的数据。

        触发器可以定义在一个INSERT、UPDATE或DALETE命令之前或之后执行

        所谓触发器函数,就是一个无参并返回一个trigger类型的函数,用于触发器来执行任务的函数,所以在创建触发器前,要先创建一个触发器函数。

书写格式

触发器函数创建格式:

CREATE FUNCTION 函数名() RETURNS trigger as $函数名$BEGIN 函数执行代码;end;
$函数名$ LANGUAGE plpgsql;

然后再创建触发器,用于pgsql在用户执行某一个指定的操作时,自动激活触发器完成任务

触发器创建格式:

CREATE trigger 触发器名 BEFORE|AFTER 触发事件【INSERT|UPDATE|DELETE】 ON 表名
FOR EACH ROW EXECUTE PROCEDURE 触发器函数名();

BEFORE:在触发事件之前先完成函数动作,然后再执行触发事件本身

AFTER:在触发事件之后再完成函数动作

使用案例

 我们需要创建一个表timedb,有三个属性:uidgiduptime,其中uptime需要使用触发器timedb_updateTime在新增每条新记录时执行函数func_timedb自动获取当前时间并存储

1.先创建这张基础表timedb

CREATE TABLE timedb (uid INTEGER,gid INTEGER,uptime timestamp with time zone);

2.创建触发器函数

CREATE FUNCTION func_timedb() RETURNS trigger as $func_timedb$BEGIN if(TG_OP='UPTIME')thenif NEW.uptime=OLD.uptime thenreturn null;end if;end if;update timedb set uptime = NOW() where uid = NEW.uid and gid=New.gid;return null;end;
$func_timedb$ LANGUAGE plpgsql;

这里说明一下代码中的NEW和OLD,这两个关键字在触发器中有不同的用法

NEW:用于引用触发器操作后(例如,INSERT 或 UPDATE 操作后)的新行数据,

  • 在 INSERT 触发器中,NEW 表示将要插入的新行。
  • 在 UPDATE 触发器中,NEW 表示更新后的行数据。

OLD: 用于引用触发器操作前(例如,UPDATE 或 DELETE 操作前)的旧行数据,

  • 在 UPDATE 触发器中,OLD 表示更新前的行数据。
  • 在 DELETE 触发器中,OLD 表示将要被删除的行数据。

注意在update更新操作时是调用了内置函数NOW()来赋值给uptime注意不要打错字,不然该问题会在后续插入数据的时候才会出现错误

3.创建触发器

CREATE trigger timedb_updateTime AFTER INSERT ON timedb
FOR EACH ROW EXECUTE PROCEDURE func_timedb();

 

4.基础表和触发器都完成后就可以尝试插入数据了,我们只插入前两列的数据uidgid

INSERT INTO timedb VALUES(1,3);

5.最后查看一下我们插入的数据

没问题,uptime有正确的自动填入了 

使用触发器可以大大减少sql代码的书写工作,提高效率,除此之外还可以用于表更新时的某些数据进行自动化修改,不过触发器的应用频率并不是特别高,该部分内容可以仅了解。

作者的话(Alvin):

        本文根据原书《PostgreSql11 从入门到精通》(清华大学出版社)第11章总结整理,为提问与解答可以帮助更多人,本博客模拟GitHub的issue方案,所以私信已关,有问题请在评论区直接指正与提问,允许转发、复制或引用本文章,必须遵守开源法则注释来源与作者,感谢您的阅读

http://www.hengruixuexiao.com/news/28852.html

相关文章:

  • 网站前台和后台设计上海网络营销有限公司
  • dw做网站教程视频360网站收录
  • 济南网站建设排名网推怎么做
  • 旅游企业网站建设工作的通知深圳百度seo公司
  • 做asmr的网站seo搜索排名影响因素主要有
  • 北京住房和城乡建设委员会网站公告电商关键词查询工具
  • 2023年二建报名网站官网登录郑州seo全网营销
  • 日本一级做a爰网站自助建站seo
  • 网站备案就是合法的磁力狗在线引擎
  • 网站不备案行吗百度网站关键词排名助手
  • 网站开发人员招募费用百度24小时客服电话136
  • python免费自学网站网站模板平台
  • facebook 网站开发百度客户端下载安装
  • 曲靖网站建设公司网络营销的方法
  • 100款禁用网站西安seo优化
  • 网站实名制注册怎么做网络营销推广方案论文
  • 自己做的网站很卡网络营销专业培训学校
  • 做招聘的h5用哪个网站北京网站搭建哪家好
  • 东莞市做网站公司花都网络推广seo公司
  • 铭万魔方做网站怎么样百度学术搜索入口
  • 常州中环互联网网站建设怎么推广网址
  • 网站页面设计软件怎样在百度上做免费推广
  • 模拟人生4做游戏下载网站优化师是干嘛的
  • 怎样给网站找空间做备案软文拟发布的平台与板块
  • python 开发手机网站开发网站的营销推广方案
  • 做网站一般费用多少中国十大公关公司排名
  • wordpress文本组件使用宁波seo优化服务
  • 青岛专业网站建设价格微信管理助手
  • 新网站如何推广西安网站搭建
  • 网站开发能干什么推广产品的渠道