博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
创建触发器的基本语法
阅读量:6572 次
发布时间:2019-06-24

本文共 1809 字,大约阅读时间需要 6 分钟。

节选自 http://blog.csdn.net/indexman/article/details/8023740/

CREATE OR REPLACE TRIGGER triger_DESP_to_segmentpoint

AFTER                                 --可以选 BEFORE 或 AFTER ,指触发器在附着表操作的之前还是之后触发
INSERT OR DELETE          --触发事件,可以在 INSERT | DELETE | UPDATE(OF column ...) 中单选或多选,多选只能用OR连接,不能用ADD
ON DESIGNATED_POINT  --附着表,或视图,触发器只能附着在一张表/视图上
FOR EACH ROW                --FOR EACH ROW选项说明触发器为行触发器。还有可以有语句触发器,二者区别是触发次数以行为单位还是语句为单位

--参照当前的新、旧列值,默认的相关名称分别为OLD和NEW。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。

BEGIN                                 
  CASE
       WHEN DELETING THEN          --判断动作类型,可以选择 INSERTING|DELETING|UPDATING [(column_1...)更新指定列时触发]:

                --WHEN 子句说明触发约束条件,WHEN 子句指定的触发约束条件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF 行触发器和其它类型的触发器中。

       delete from segment_point where point_uuid = :old.designated_point_uuid;
       WHEN INSERTING THEN
       insert into segment_point (point_uuid) valueS(:new.Designated_Point_Uuid);   --如果是INSERTING,能用:new代表行,而用:old只能返回null值,
  END CASE;
END;

实例1:添加/删除类型triger

CREATE OR REPLACE TRIGGER triger_NAVAID_to_segmentpoint

AFTER INSERT
   OR DELETE
ON NAVAID
FOR EACH ROW
BEGIN
  CASE
           WHEN DELETING THEN
           delete from segment_point where point_uuid = :old.NAVAID_UUID;
           WHEN INSERTING THEN
           insert into segment_point (point_uuid) valueS(:new.NAVAID_UUID);
  END CASE;
END;

实例2、3有条件的添加trigger

--删除触发器Navaid

CREATE OR REPLACE TRIGGER Navaid_to_sgmtpt_del
After
Delete
ON Navaid
For Each Row
Begin
 delete from segment_point where point_uuid = :old.Navaid_uuid;
End;
/
--插入触发器Navaid_ts
CREATE OR REPLACE TRIGGER Navaid_to_sgmtpt_insert
After
Insert
ON Navaid_ts
For Each Row
  when(new.Type_id<=7 and new.interpretation='BASELINE')
Declare v_count Number;
Begin
  select count(*) into v_count from segment_point where point_uuid =:new.Navaid_uuid;
  if v_count=0 then
     insert into segment_point (point_uuid) valueS(:new.Navaid_Uuid);
  end if;
End;
/

转载于:https://www.cnblogs.com/mol1995/p/7955106.html

你可能感兴趣的文章
Master主动向Slave发送binlog?还是Slave主动向Master要binlog?
查看>>
WordPress纯PHP代码实现记录搜索引擎蜘蛛爬行记录
查看>>
CentOS6.5和RedHat6.5下以rpm方式安装mysql-5.6.20
查看>>
【Win 10应用开发】Adaptive磁贴模板的XML文档结构
查看>>
[20170623]利用传输表空间恢复数据库2.txt
查看>>
SSL WSS HTTPS
查看>>
第十八章——基于策略的管理(1)——评估数据库属性
查看>>
谈谈应届生应聘的一点看法
查看>>
一致性 hash 算法(consistent hashing)
查看>>
Python使用线性回归简单预测数据
查看>>
Java 使用 Dom4j 解析 XML 指南
查看>>
使用truss、strace或ltrace诊断软件的"疑难杂症"
查看>>
构建自主可控生态链
查看>>
mysql查找配置文件的顺序
查看>>
想要更好的云基础设施管理!你检查IT工具集了吗?
查看>>
Spring(三)之自动装配、表达式
查看>>
阿里云发布“码上公益”平台 打造更高效透明的“科技公益”
查看>>
Hadoop Yarn事件处理框架源码分析
查看>>
DockOne微信分享(七十七):用Harbor实现容器镜像仓库的管理和运维
查看>>
监理延期 验收工程款制约三方
查看>>