精华内容
下载资源
问答
  • 触发器的创建及示例1) 字段更新时触发2) 行插入或更新时触发3. 触发器的删除参考 1. postgresql触发器 触发器可以理解为一种绑定,在某个场景出现自动做的操作,可以执行复杂的Procedure,也可以是简单的sql...

    1. postgresql触发器

    触发器可以理解为一种绑定,在某个场景出现时自动做的操作,可以执行复杂的Procedure,也可以是简单的sql;

    • 场景可以是:字段更新、行插入、行更新

    • 步骤:
      1)创建触发器被触发时,需要执行的函数方法;
      2)创建触发器,并绑定函数;

    2. 触发器的创建及示例

    1) 字段更新时,触发

    业务场景,当tableA表的num更新的时候,把ID相同的数据的tabelA表的count字段值更新为num*10;

    create or replace FUNCTION func_updateposition() RETURNS trigger
    AS
    $func_updateposition()
    BEGIN
         update tableA set count= num*10 where id = NEW.ID;
         RETURN NEW;
    END;
    $func_updateposition$ LANGUAGE plpgsql;
    
    create trigger updatePosition_trigger AFTER UPDATE OF "num" ON tableA 
    FOR EACH ROW EXECUTE PROCEDURE func_updateposition();
    

    2) 行插入或更新时,触发

    3. 触发器的删除

    触发器是绑定在表的行或者列上的,删除语句中需要指定触发器名称及表名;

    drop trigger updatePosition_trigger on tableA;
    

    4. 触发器的坑

    • 千万不要表的行列更新,每一行都建立触发器,那样表的数据量大了,会压力贼大;
    • 分布式的情况下主外键依赖、触发器尽量不要,会带来额外消耗;
    • 触发器可以用在必须的情况下,或者只是某个列字段更新或者插入上,这样会更无感,高效;

    参考

    展开全文
  • 代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])–当Type字段更新时,才会触发触发器 insert into MasterLogTable select Id ,(Case [Type] when 1 then ...
  • create trigger TR_MasterTable_Update ... if update ([Type])--当Type字段更新时,才会触发触发器  insert into MasterLogTable  select   Id  ,(Case [Type] when 1 then 'Type1' 

    create trigger TR_MasterTable_Update
    on MasterTable
    after update
    as
     if update ([Type])--当Type字段被更新时,才会触发此触发器
      insert into MasterLogTable
      select 
      Id
      ,(Case [Type] when 1 then 'Type1' 
       when 2 then 'Type2'
       when 3 then 'Type3'
       when 4 then 'Type4'
       else 'TypeDefault'
      end)
      ,Name
      from inserted
    go

     

    另外再补充一句:insert和update的数据都会保存在临时表中,所以使用inserted可以取出这些数据,删除时使用deleted可以取出被删除的数据

    展开全文
  • CREATE TRIGGER [dbo].[Trg_Update_table1_column1] on table1 after update as if update (column1) --当column1字段更新时,才会触发触发器BEGIN SET NOCOUNT ON; select top 1 * from xybase --执行的操作end...

    CREATE TRIGGER [dbo].[Trg_Update_table1_column1]
       on table1
      after update
      as
      if update (column1)  --当column1字段被更新时,才会触发此触发器
    BEGIN
        SET NOCOUNT ON;
        select top 1 * from xybase  --执行的操作
    end

     

    另外再补充一句:insert和update的数据都会保存在临时表中,所以使用inserted可以取出这些数据,删除时使用deleted可以取出被删除的数据

    转载于:https://www.cnblogs.com/yubufan/p/4354978.html

    展开全文
  • 用if判断更新列 // 不想触发触发器更新 IF UPDATE(不想更新的列名) BEGIN PRINT ('不触发!'); END; ELSE BEGIN 原触发器内容 END;

    用if判断更新列

    // 不想触发触发器更新
    IF UPDATE(不想更新的列名)
        BEGIN
            PRINT ('不触发!');
        END;
        ELSE
        BEGIN
            原触发器内容
        END;
        
    
    展开全文
  • 注意:语句中出现的old,new,...第二种:两张表,当A表更新其中某条记录的某个字段时触发指定的触发器更新B表与A表关联的记录的某个字段。对于第一种情况:模拟如下:表结构:test表CREATE TABLE `test` (`id...
  • 程序修改其中 [HomeVisitReportCount] [LawyerLetterCount] 两列未记日志、 由触发器实现监控目的、 具体sql如下、 创建日志记录表 CREATE TABLE [dbo].[tb_RisksStatusLog]( [Id] [UNIQUEIDENTIFIER] N...
  • 修改t1表,触发t2表的某个字段的修改 ...AFTER UPDATE ON t1---当修改了T1时触发 FOR EACH ROW BEGIN update t2 set col1 = :new.col1,col2=:new.col2,... where id = :old.id; -- 关联条件 E...
  • sql 更新触发器 更新指定字段值为某个值触发表中有三个字段(a、b、c)假设现在表里有一条记录:a=1、b=1、c=1当字段c的内容被更新为3时候触发更新为其他值触发如2、4等),触发时候同时查找出记录中a的值==...
  • 今天遇到一个有意思的小问题,一同事有这样一个需求:在更新表T,如果只是更新字段C,那么不希望触发该该表的触发器去处理业务逻辑。即想在触发器中做 出判断:如果更新了字段C,那么跳出触发器,不处理业务逻辑,...
  • 前提:适用于委外工单核发时触发请求“请购单汇入”的情况,即一张委外工单对应一张请购单。没有考虑多个委外工单,按供应商、采购员等分组手工汇入请购单的情况。 委外工单核发时触发请求“请购单汇入”,将请购...
  • 我想知道在处理NULL值是否有更有效的方法来测试每个字段的更改.CREATE TABLE foo (a INT NULL DEFAULT NULL,b INT NULL DEFAULT NULL,c INT NULL DEFAULT NULL);CREATE TABLE bar (a INT NULL D...
  • 触发器-行级触发

    2016-12-22 16:49:29
    当student表的stuName字段更新时, 将更新后的stuName同步到rmstuitemfeeinfo表中, 条件是student.stuid=rmstuitemfeeinfo.studentid 【注】:new.stuname表示更新后的值,:old.stuid表示更新之前的值 CREATE OR...
  • 问题来源: 公司框架封装严重,导致已有框架不能达到客户需求,寻求解决方案。 ... 解决思路:在公司框架...故,在用户表的密码字段被修改后,此触发器触发更新对应时间。 CREATE TRIGGER tr_PBDM_USER_PASSWO...
  • 触发器

    2016-10-03 20:20:25
    触发器是与表有关的数据库对象,在满足定义...例如:对某个表的不同字段的after更新触发器,在使用oracle数据库的时候可以定义成两个不同的update触发器更新不同的字段时触发单独的触发器,但在mysql数据库中,只能
  • 例子: Create Trigger [dbo].[WLCG_SP_TRI] ...As --事件触发后所要做的事情 if Update(SPR) begin Update WLCG_SP Set SPR='' From WLCG_SP br , Deleted d ,Inserted i --Deleted和Inserted临时表 ...
  • 触发器初始结构:DELIMITER $$CREATETRIGGER `数据库名`.`触发器名` BEFORE/AFTER INSERT/UPDATE/...目的:当一张表中的某个字段更新为特定值触发更新本条数据的另一字段值(示例:根据prj_base_info表中的proj...
  • MySql触发器对同表更新

    千次阅读 2018-11-01 17:24:27
    触发器初始结构: DELIMITER $$ CREATE TRIGGER `数据库名`.`触发器名` BEFORE/AFTER INSERT/UPDATE/DELETE ON `数据库名`.`表名` ...目的:当一张表中的某个字段更新为特定值触发更新本...
  • 最近想实现一个监控mysql表的某个或者某几个字段值的变化,当监控字段的值发生变化,将原有值和更新值保存下来。想实现这个功能受限想到的就是触发器,mysql的触发器块很久没碰过了,重新拎起来还是免不了查些资料...
  • Mysql触发器

    2015-06-27 12:34:25
    例如,在对某个表的不同字段的alter更新触发器,在使用oracle数据库的时候,可以定义两个不同的update触发器更新不同的字段时触发单独的触发器,但是在mysqy数据库时候,只能定义一个触发器,在触发器中通过判断...

空空如也

空空如也

1 2 3 4
收藏数 65
精华内容 26
关键字:

触发器更新字段时触发