精华内容
下载资源
问答
  • PLSQL编写触发器

    2016-06-30 15:57:03
    主题:Oracle学习笔记(8) 使用PLSQL编写触发器 DML 触发器:  对表执行Insert、Update、Delete操作时激发  可以用于执行校验、设置初使值、审核改变、甚至禁止某种DML操作  语法:  CREATE OR REPLACE ...

    主题:Oracle学习笔记(8) 使用PLSQL编写触发器

    DML 触发器: 
    对表执行Insert、Update、Delete操作时激发 
    可以用于执行校验、设置初使值、审核改变、甚至禁止某种DML操作 
    语法: 
    CREATE OR REPLACE TRIGGER 触发器名称 
    {AFTER|BEFORE } -- 指定触发时机 
    {INSERT OR DELETE OR UPDATE} -- 指定触发器事件 
    ON 表名 --指定所监控的表 
    {FOR EACH ROW|FOR EACH STATEMENT} -- 指定触发器次数 
    BEGIN 
    --代码; 
    END; 

    相关概念: 
    AFTER|BEFORE:在什么事件之前或之后执行 
    INSERT|DELETE|UPDATE:什么事件 
    ON 表名:触发器建在什么表上,即监控什么表 
    FOR EACH ROW:行级触发,示例:delete from t1,删除1000行,则执行1000次(一行一次) 
    FOR EACH STATEMENT:语句级触发,示例: delete from t1,删除1000行,则执行1次(一句一次) 
    :new 行变量:保存事件发生时新数据所在行,只有insert事件和update事件才有新数据 
    :old 行变量:保存事件发生时旧数据所在行,只有delete事件和update事件才有旧数据 

    示例:指出事件,及事件中的新数据和旧数据 
    insert into emp(empno,ename) values(51,'job'); 
    分析:只有一行新数据(51,job),对应:new变量。 

    update emp set ename='oracle' where empno = 51; 
    分析:旧数据 (51,job) ,对应:old变量。 
    新数据(51,oracle),对应:new变量。 

    delete from emp where empno = 51; 
    分析:只有一行旧数据(51,oracle),对应:old变量。 

    Sql代码 
    1.-- 显示触发器 
    2.select trigger_name,status from user_triggers; 
    3.-- 禁止触发器 
    4.alter trigger tr_emp_salary disable; 
    5.-- 激活触发器 
    6.alter trigger tr_emp_salary enable; 
    7.-- 禁止表的所有触发器 
    8.alter table employee disable all triggers; 
    9.-- 激活表的所有触发器 
    10.alter table employee enable all triggers; 
    11.-- 重新编译触发器 
    12.--alter table tr_emp_salary compile; 
    13.-- 删除触发器 
    14.drop trigger tr_emp_salary; 

    展开全文
  • mysql编写触发器报错

    2021-01-16 10:07:17
    mysql编写触发器报错 触发器创建代码 /* 触发器 */ CREATE TRIGGER chufaqi BEFORE INSERT ON `customer` FOR EACH ROW BEGIN /*INSERT INTO test(`name`,account,pwd,money) SELECT c.`name`,c.`account`,c.`pwd...

    mysql编写触发器报错

    触发器创建代码

    /* 触发器 */
    CREATE TRIGGER chufaqi BEFORE INSERT 
    ON `customer`
    FOR EACH ROW 
    BEGIN
      /*INSERT INTO test(`name`,account,pwd,money) SELECT c.`name`,c.`account`,c.`pwd`,c.`money` FROM customer AS c ORDER BY id DESC LIMIT 1;*/
      INSERT INTO test VALUES (NULL,"111","111","111",123.0);
    END;
    

    报错:

    错误代码: 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
    

    解决:

    BEGIN 后面加上; BEGIN;
    
    展开全文
  • pgsql编写触发器

    千次阅读 2017-02-21 22:51:32
    建立触发器函数CREATE OR REPLACE FUNCTION update_sub_towncode_insert() RETURNS "trigger" AS $BODY$ begin if(length(NEW.towncode)>0) THEN NEW.sub_towncode=subxzqhstr(NEW.towncode); END IF; RETURN NEW; ...

    建立触发器函数

    CREATE OR REPLACE FUNCTION update_sub_towncode_insert()
       RETURNS "trigger" AS
    $BODY$
    begin
    if(length(NEW.towncode)>0)
    THEN
    NEW.sub_towncode=subxzqhstr(NEW.towncode);
    END IF;
    RETURN NEW;
    end
    $BODY$
       LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION update_sub_towncode_insert() OWNER TO postgres;

    建立触发器

        CREATE  TRIGGER update_sub_towncode_insert
       BEFORE INSERT
       ON poisexamine
       FOR EACH ROW
       EXECUTE PROCEDURE update_sub_towncode_insert();
    展开全文
  • ORACLE编写触发器

    2018-05-03 11:26:28
    CREATE OR REPLACE TRIGGER trigger_insert_appraise BEFORE UPDATE ON t_appointment FOR EACH ROW ...测试触发器,File — New — Test Window,输入执行语句,如下图,点击红框中的按钮或者按F9进行调试。
    CREATE OR REPLACE TRIGGER trigger_insert_appraise
       BEFORE UPDATE ON t_appointment
       FOR EACH ROW
    /**
     *  注:对同一张表操作的话不应该用after update,而应该是before update ,
     *  就是应该在update之前进行更改,而且这是update哪条数据就对那条数据进行修改
     */
    DECLARE
          vs_appraise_id varchar(11);
    BEGIN
      IF :new.status = 'order04' THEN
        IF :old.appointment_id = :new.appointment_id THEN
          :new.status := 'order06';
        END IF;
    
        SELECT seq_appraise.nextval INTO vs_appraise_id FROM dual;
        INSERT INTO t_appraise (
           appraise_id, customer_id, customer_name, star_level, comments
        ) VALUES (
           vs_appraise_id, :new.customer_id, :new.customer_name, 100, '系统默认好评'
        );
    
      END IF;
    END;

    测试触发器,File — New — Test Window,输入执行语句,如下图,点击红框中的按钮或者按F9进行调试。

    展开全文
  • sql server编写触发器

    2017-04-11 15:03:51
    为了解决这一问题,现要求用触发器实现。 具体需求如下:现有一张表treport,包含reportid,classids等字段,其中classids由一个或多个栏目值组成。而每个栏目值都是以C开头,每两个栏目值中间用','间隔,即使只有一...
  • 自己动手编写触发器

    千次阅读 2011-11-15 15:16:26
    其实这个触发器的思路是根据我在公司编写的一个程序对数据库操作而来,由于程序不能直接操作触发器,只能在操作的t1的时候,在同时对t2进行操作,最近看到触发器,完全符合程序中的各项要求,当然我不可能直接去手动操作...
  • 使用Java编写Oracle触发器的实现全立新【期刊名称】《计算机与现代化》【年(卷),期】2004(000)010【摘要】数据库触发器是响应插入、更新和删除等数据库事件而执行的过程.本文详细叙述了Oracle触发器的功能及应用场合...
  • 为oracle数据库编写触发器或者存储过程,在表名为send的表中有一个字段sengflag(字符类型为char(1)),该字段默认值是0,当要插入此表中的数据此字段为0时,则数据立即插入;当要插入此字段的值为1时,则此行数据延迟...
  • 我的触发器写了如果allowance=0时或者con为冻结时就不能插入数据,如下图 可当allowance=0时 仍能插入数据,只有con=冻结这个分支有效
  • 1 verilog与Systemverilog两种语言编写触发器 1 本节目录 1)Verilog简介 2)Systemverilog简介 3)D触发器verilog编码 4)D触发器Systemverilog编码 5)本节结语 2 Verilog简介 Verilog HDL是一种硬件描述...
  • 1 verilog与VHDL两种语言编写触发器 1 本节目录 1)Verilog简介 2)Systemverilog简介 3)D触发器Verilog编码 4)D触发器VHDL编码 5)本节结语 2 Verilog简介 Verilog HDL是一种硬件描述语言,以文本形式来...
  • I read this article but it seems not work for delete. I got this error when tried to create a trigger:Executing SQL script in serverERROR: Error 1363: There is no NEW row in on DELETE triggerCREATE TR...
  • Ch8 PL/SQL编写触发器

    2014-08-26 21:35:53
    块分匿名块,命名块(1子程序含过程和函数,2触发器触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的DML语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。 ...
  • 8、使用PL/SQL编写触发器:  触发器存放在数据缓冲区中。  触发器加序列能够实现自动增长。  在触发器中不能使用connit和rollback。  DML触发器在对特定的表执行DML(insert、update、delete)操作时激发。 ...
  • zabbix之自动注册,编写触发器:一定时间内超过某个负载值的时间 zabbix中添加主机很多时可以考虑自动注册来自动添加,下面按照图片顺序来看,zabbix版本:3.0.28 超过负载30%的持续时间 ...
  • 数据库中有两个表,分别为List表和List_B表,表的结构如下: List表: Code Num Name CTime DR 2012 5 名称 时间 0 List_B表: ...如果List表有数据了,则插入这样一条数据到List_B表中。...这个触发器怎么写?
  • 触发器脚本如下: create or replace trigger trigger_test before insert or update on RANDOM_ORDERS for each row begin  select sysdate into :new.UPDATETIME from dual; end; 其中,tr...
  • 实例教您如何在Sql server中编写触发器。更多资料请直接邮件409376301@qq.com索取。
  • 新建一个对视图插数据然后往表中分别插数据的触发器 CREATE TRIGGER users_insert ON user_view INSTEAD OF INSERT as  declare @name nvarchar(32),@course int; declare ins_cursor cursor for  ...
  • 触发器编写

    2011-06-28 23:56:49
    以前项目中编写触发器   create or replace trigger TRG_IUD_EX_FEE_SECHEME_MAIN after insert or update or delete on fee_scheme_main for each rowdeclare emp_table_name varchar2(20) default 'fee_...
  • 触发器编写例子

    2011-12-22 14:45:33
    新增触发器,修改触发器 ,帮助以后开发使用。
  • 时间过得真快啊,转眼就到了Oracle学习笔记的最后个章节了,通过前面七章的学习大家应该对... 这是第八章的学习笔记,学习完第七章的子程序和包之后,开始要学习触发器的使用了……,希望大家能多给俺一些支持啊!...
  • 如题,表建立如下 create table zd(firstname char(6), name varchar(20), ...(机怎么取得插入的那行数据)。 还有是,倘若不用delimiter $$,就会语法错误,建立不了触发器。这是为什么呢?
  • oracle触发器编写

    2020-09-27 19:10:19
    当表的数据不知道怎么进来时,通过触发器修改字段进表的数据。 CREATE OR REPLACE TRIGGER "GLOGOWNER"."TRI_BD_PNLT_REC" BEFORE INSERT ON BD_PNLT_REC FOR EACH ROW DECLARE /* 需求:当新增数据为频次时,即PNLT_...
  • mysql触发器编写

    2015-09-07 12:08:50
    [删除] DELIMITER $$ USE `[数据库名]`$$ -- 判断数据库中是否...-- 不存在[触发器名]触发器,开始创建触发器 -- Trigger触发条件为delete成功后进行触发 CREATE /*!50017 DEFINER = 'root'@'%' */ TRIGGER `

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,882
精华内容 19,552
关键字:

怎样编写触发器