当前位置:   article > 正文

postgresql 中关于触发器的笔记_pgadmin 触发器函数

pgadmin 触发器函数

设计好了简单的微博的数据库的ER图
ER图

然后建表的时候就用pgadmin建了,很简单,然后看到如果要完整的实现数据库,其实要用到触发器。
语法:
1.创建触发器函数:

CREATE OR REPLACE FUNCTION 函数() RETURNS TRIGGER AS $body$  
    BEGIN  
        要执行的语句 
        RETURN NEW/OLD;   
    END;  
$body$  
LANGUAGE plpgsql;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.触发器部分:
CREATE TRIGGER trigger_name
AFTER INSERT
ON table_name
FOR EACH ROW
EXECUTE PROCEDURE 函数()

虽然看起来很简单,但是用起来一开始还是很懵逼,但是只要搞清楚两点就很容易操作了:
1、NEW表示是你插入的数据,
比如:当你在user_follow表中插入了一行数据(表示谁关注了谁这件事)我们要在user表中更新一下某个user的follow_number这一值,NEW.user_follow_id 表示你插入的那行的user_follow_id这一列的值。
因为我们要用这个值去user表中找到user的id。所以这个时候得用NEW,一般可以说NEW用在insert或update的时候。
2.相反,OLD是你插入数据前表里已经存在的数据。
比如:当你在user_follow表中删除了一行数据(表示谁取消关注了谁这件事),user的关注的人数当然也得减少一个。这个时候当我们做删除操作的时候,我们得用删除的这一行中的user_id去user表中找id对吧~
所以,我们这个时候用的是以前的表里已经有的内容
,用OLD.xxx来表示就行了。
3.FOR EACH ROW很重要,虽然我现在不太明白这个是什么意思,但是我也懒的知道,反正写上就行了,不要从字面上翻译的理解。因为如果不写的话在执行操作的时候会有莫名的错误。

目前就先记录这么多。啦啦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/770208
推荐阅读
相关标签
  

闽ICP备14008679号