触发器爬坑

1、触发器默认不允许操作当前表

如果有需求,则需要开启自治事务:

PRAGMA AUTONOMOUS_TRANSACTION;

并手动提交开启自治事务之后的修改:

COMMIT;

2、查询当前表的数据

:NEW是获取修改后的行数据,:OLD是获取修改前的行数据。如果用sql查询,则查询出来的结果集是修改之前的数据,也就是update操作之前的数据。

3、FOR循环取值

不管你遍历的结果集只有一个字段还是多个字段,FOR循环都是按行取数据,也就是将一个或多个字段封装成一行数据。
以下面为例,当你只查询一个字段时,在FOR循环里面取值也需要通过fields.aField来获取数据:

FOR fields IN (SELECT aField FROM xxx) LOOP
  IF fields.aField = xxx THEN 
    xxx;
  END IF;
END LOOP;

4、变量命名

申明变量名不要和数据库表字段名重复,不然会出现意想不到、很难发现的问题。

posted @ 2021-06-30 16:00  会翻滚的咸鱼  阅读(32)  评论(0编辑  收藏  举报