postgresql 中关于触发器的笔记

来源:互联网 发布:卖家做淘宝客怎么玩 编辑:程序博客网 时间:2024/05/17 03:56

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

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

CREATE OR REPLACE FUNCTION 函数() RETURNS TRIGGER AS $body$      BEGIN          要执行的语句         RETURN NEW/OLD;       END;  $body$  LANGUAGE plpgsql;

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很重要,虽然我现在不太明白这个是什么意思,但是我也懒的知道,反正写上就行了,不要从字面上翻译的理解。因为如果不写的话在执行操作的时候会有莫名的错误。

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

原创粉丝点击