`

trigger 触发器的使用

    博客分类:
  • sql
阅读更多
1.目的:
网厅前台订单查询中只查到netb_order的内容,由于接到一个越级投诉,用户需要看到预受理单子
关于10000号客户人员对订单的回复,由于订单表根据订单类型的不同,关联的是不同的订单明细表,10000号
客服人员的回复存在不同的订单明细表里,于是考虑在数据库级别使用触发器。这样改动量小


2.实现:

a.首先在netb_order中加一个字段 叫 replycontent 用来存10000号客服人员对订单的回复
b.在各种订单明细表中都加上 trigger ,当有10000号客服人员添加回复的时候,trigger 会自动把明细表
回复内容同步到netb_order 中的replycontent 字段





什么是触发器?



触发器
  是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
  功能:
  1、 允许/限制对表的修改
  2、 自动生成派生列,比如自增字段
  3、 强制数据一致性
  4、 提供审计和日志记录
  5、 防止无效的事务处理
  6、 启用复杂的业务逻辑







先写一个例子玩玩 ,建立两个表test1,test2,表结构一样, 当往test1表中插入数据的时候,使用触发器,自动往test2表中也插入一条数据



Sql代码
1.create or replace trigger tr_insert_test1
2. before insert on test1
3. for each row
4.begin
5.
6.insert into test2 values(:new.id,:new.name);
7.
8.end;
create or replace trigger tr_insert_test1
before insert on test1
for each row
begin

insert into test2 values(:new.id,:new.name);

end;




当使用 insert into test1(id,name) values('123','huxl');的时候 test2表中也多了一条记录





:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;



before表示在操作完成前触发, after表示在完成后触发



下面完成我们的业务







Sql代码
1.3.步骤:
2.a. 见将历史数据同步到netb_order表中
3.
4.update netb_order o set o.replycontent= (select up.replycontent
5.from
6.netb_PackagesNewSetUp up where up.id=o.businessid);
7.
8.
9.
10.update netb_order o set o.replycontent= (select ps.reply
11.from
12.netb_phonenewsetup ps where ps.id=o.businessid);
13.
14.
15.
16.update netb_order o set o.replycontent= (select sr.reply
17.from
18.netb_selfhoodreq sr where sr.selfhoodreqid=o.businessid);
19.
20.
21.update netb_order o set o.replycontent= (select ci.reply
22.from
23.netb_cards_info ci where ci.id=o.businessid);
24.
25.
26.update netb_order o set o.replycontent= (select bo.reply
27.from
28.netb_basicorder bo where bo.id=o.businessid);
29.
30.
31.2. 为订单从表添加触发器
32.
33.
34.drop trigger xxx
35.
36.触发器需要一个一个执行
37.
38.create or replace trigger tr_netb_PackagesNewSetUp
39. after update of replycontent on netb_PackagesNewSetUp
40. for each row
41.begin
42.update netb_order set replycontent=:new.replycontent where businessid=:old.id;
43.
44.end;
45.
46.
47.create or replace trigger tr_netb_phonenewsetup
48. after update of reply on netb_phonenewsetup
49. for each row
50.begin
51.update netb_order set replycontent=:new.reply where businessid=:old.id;
52.
53.end;
54.
55.create or replace trigger tr_netb_selfhoodreq
56. after update of reply on netb_selfhoodreq
57. for each row
58.begin
59.update netb_order set replycontent=:new.reply where businessid=:old.selfhoodreqid;
60.
61.end;
62.
63.
64.create or replace trigger tr_netb_cards_info
65. after update of reply on netb_cards_info
66. for each row
67.begin
68.update netb_order set replycontent=:new.reply where businessid=:old.id;
69.
70.end;
71.
72.
73.
74.create or replace trigger tr_netb_basicorder
75. after update of reply on netb_basicorder
76. for each row
77.begin
78.update netb_order set replycontent=:new.reply where businessid=:old.id;
79.
80.end;

 

分享到:
评论

相关推荐

    trigger触发器trigger触发器trigger触发器

    --行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...

    mysqltrigger触发器.pdf

    使用触发器可以实现类似于 CHECK 约束的功能,确保只有满足特定条件的数据才能被插入或更新。 ```sql CREATE TRIGGER check_age BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.age SIGNAL SQLSTATE '...

    Trigger [触发器ok].sql

    Trigger [触发器ok].sql

    springTrigger 触发器

    `Trigger`对象包含了任务执行的时间策略,比如简单触发器(SimpleTrigger)、cron触发器(CronTrigger)等。简单触发器允许设置间隔时间执行,而cron触发器则可以按照预定义的cron表达式进行复杂的定时安排。 2. **...

    Go-go-trigger-golang的全局事件触发器

    本文将深入探讨“Go-trigger”,一个专为Golang设计的全局事件触发器库。通过这个库,我们可以方便地注册事件ID,并在项目中的任何位置触发这些事件,从而实现松耦合和模块化的代码结构。 Go-trigger的核心功能在于...

    oracle触发器的创建与使用

    在Oracle中,查看、编辑、重命名和删除触发器同样使用类似的操作,如`SELECT * FROM USER_TRIGGERS`来查看触发器,`ALTER TRIGGER`用于编辑,`RENAME TRIGGER`用于重命名,`DROP TRIGGER`用于删除。 通过学习和掌握...

    mysql中触发器使用详解.docx

    在这里,`trigger_name`是触发器的名称,通常建议使用`table_time_event`的方式命名,如`student_after_insert`。`table_name`是你想要关联的表名,`time`可以是`BEFORE`或`AFTER`,表示触发器是在操作前还是后执行...

    触发器例程,关于触发器的使用

    触发器的一些例子,可以快速的使用触发器进行数据库编程

    如何制定自己的SQL Server 2000触发器

    创建触发器使用 CREATE TRIGGER 语句,例如: CREATE TRIGGER 触发器名称 ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 语句 注意:触发器名称是不加引号的。 二、重命名触发器 可以使用 sp_rename 存储过程...

    专用触发器 使用教程 PDF

    5. **ALTER TRIGGER语句**:允许对已存在的触发器进行修改,增加了触发器的灵活性。 6. **事务和文档信息**:触发器可以记录SQL事务信息,有助于优化数据库性能和维护数据一致性。 7. **外键与触发器**:虽然外键...

    SQL触发器使用实例

    ### SQL触发器使用实例解析 #### 一、触发器概述 在数据库管理中,触发器是一种特殊类型的存储过程,它可以在特定的事件(如插入、更新或删除操作)发生时自动执行。触发器的主要作用是确保数据完整性,通过在特定...

    触发器使用教程和命名规范

    触发器使用教程和命名规范 Oracle 触发器是一种数据库对象,它与某张表相关联,当有 DML 语句对表进行操作时,可以引起触发器的执行,达到对插入记录的一致性、正确性和规范性控制的目的。 触发器的实现比较灵活,...

    SQL触发器的使用方法,

    通过使用触发器,数据库管理员和开发人员可以实现复杂的业务逻辑和数据完整性规则,而这些规则无法通过简单的约束或存储过程单独完成。 在SQL Server中,触发器主要有以下三种类型: 1. **INSERT触发器**:当向表...

    RS-Trigger.rar_Labview RS触发器_RS触发器labview_labview RS_trigger_触发器

    基于labview的可以实现的RS触发器

    mysql触发器使用实例

    通过理解和熟练运用这些知识点,你可以有效地使用MySQL触发器来增强数据库的功能,确保数据的准确性和业务流程的顺利进行。不过,要注意触发器的使用可能会增加数据库的复杂度,因此需要谨慎设计和管理。

    数据库的触发器的创建和使用

    创建触发器需要使用 CREATE TRIGGER 语句,并指定触发器的名称、类型和执行的 SQL 语句。例如: ```sql CREATE TRIGGER trg_example ON dbo.tablename AFTER INSERT, UPDATE, DELETE AS BEGIN -- 执行某些操作 END ...

    配置IBM WEBSPHERE MQ触发器

    在MQ命令中,可以使用`ALTER QUEUE(MYQUEUE) TRIGGER(ON)`来启用队列上的触发器。 在提供的`MQ命令.txt`文件中,可能包含了各种MQ命令的示例,这些命令可以帮助理解并实际操作触发器的配置。例如,`display trigger...

    mysql触发器之创建使用触发器简单示例

    我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END; 然后我们来详细看下上述...

    在DB2中创建第一个触发器

    使用DB2 Control Center或SQL语句创建触发器,以下是一个使用SQL的例子: ```sql CREATE TRIGGER OVERDRAFT_TRIGGER BEFORE UPDATE OF CheckingBalance ON accttable FOR EACH ROW WHEN (new.CheckingBalance ) ...

    实验六-触发器实验报告.doc

    在Oracle中创建触发器,使用CREATE TRIGGER语句,可以指定触发器的名字、触发时间(BEFORE或AFTER)、触发事件以及作用的表。例如,`CREATE TRIGGER trigger_name AFTER UPDATE OF column_name ON table_name FOR ...

Global site tag (gtag.js) - Google Analytics