首页 > 其他分享 >触发器

触发器

时间:2023-07-14 18:24:46浏览次数:28  
标签:salary 触发 触发器 INSERT BEFORE ROW

Oracle触发器是在特定数据库事件发生时自动执行的过程。Oracle触发器可以在以下事件上定义:

  • INSERT:当向表中插入新记录时触发
  • UPDATE:当修改表中的记录时触发
  • DELETE:当从表中删除记录时触发

创建触发器的语法如下:

CREATE TRIGGER trigger_name 
{BEFORE | AFTER | INSTEAD OF} 
{INSERT | UPDATE | DELETE} 
ON table_name 
[FOR EACH ROW]
BEGIN
    -- 触发器体
END;
  • BEFORE:在事件发生前触发
  • AFTER:在事件发生后触发
  • INSTEAD OF:取代事件
  • FOR EACH ROW:针对每一行触发,否则仅在语句级触发一次

例如,创建一个在往employees表中插入数据前触发的触发器:

CREATE TRIGGER emp_salary_trigger
BEFORE INSERT ON employees
FOR EACH ROW 
BEGIN
    -- 校验工资必须大于0
    IF :NEW.salary <= 0 THEN
        RAISE_APPLICATION_ERROR(-20002, 'Salary must be positive');
    END IF;
END;

这个触发器会在插入新记录前校验salary字段的值必须大于0,否则抛出应用程序错误。

触发器可以用来实现类似于级联更新或者删除等操作。

标签:salary,触发,触发器,INSERT,BEFORE,ROW
From: https://www.cnblogs.com/suixingc/p/17554698.html

相关文章

  • mysql8 索引、视图、事务、存储过程、触发器
    一、视图1、2、 二、触发器1、 三、事务(重要)1、  四、存储过程1、  五、函数1、  六、流程控制1、  七、索引(重要)1、 ......
  • python之数据库:SQL注入问题,视图,触发器,事务,存储过程,函数,流程控制,索引,慢查询
    SQL注入问题(了解现象)importpymysql#连接MySQL服务端conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',password='123',database='db8_3',charset='utf8',autocommit=True#......
  • navicat添加触发器实现禁止删除指定表的记录(mysql)
     选中指定表,右键选择设计表 在定义那儿填写语句 BEGINdeclaremsgvarchar(255);setmsg="禁止删除操作";SIGNALSQLSTATE'HY000'SETMESSAGE_TEXT=msg;END......
  • MySQL中创建触发器需要执行哪些操作?
    什么是触发器触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用。触发器的这种特性可以协助应用在数据库端确保数据的完整......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger存储过程一、一个简单的存储过程1,一个简单的存储过程delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建格式:createpr......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger 存储过程一、一个简单的存储过程1,一个简单的存储过程 delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建......
  • mysql数据库语法总结--存储过程、函数、视图、触发器、表
    ​概述抽空总结一下mysql的一些概念性内容,涉及存储过程、函数、视图、触发器等。一、查看存储过程、函数、视图、触发器、表1、存储过程select*frommysql.procwheretype='PROCEDURE';showprocedurestatus;showcreateprocedureproc_name;//存储过程定义​编......
  • 触发器
     --插入数据触发器createtriggerstudent_insert_triggerafterinsertonstudentforeachrowbegin--新row和旧row的数据可以通过new和old获取insertintouser_logsvalues(null,'insert',now(),new.id,concat('插入的数据id......
  • 【九】MySQL数据库之视图,触发器与存储过程
    【九】MySQL数据库之视图,触发器与存储过程视图,触发器与存储过程【一】视图视图是一个虚拟表(非真实存在)其本质是【根据SQL语句获取动态的数据集,并为其命名】用户使用时只需使用【名称】即可获取结果集可以将该结果集当做表来使用。使用视图我们可以把查询过程中的临......
  • 审计+断言+触发器
       ......