本表触发更新modifytime,跨表更新modifytime 触发器
一、每行有改动,则触发更新modifytime
SQL> create table test(id int, name varchar(10), crdate date, udate date);
表已创建。
SQL>
SQL> create trigger tri_test_up
2 before update on test
3 for each row
4 begin
5 :new.udate := sysdate;
6 end;
7 /
触发器已创建
SQL>
SQL> insert into test values(100, 'zhang', date'2016-01-01', date'2016-01-01');
已创建 1 行。
SQL>
SQL> update test set name = 'xx';
已更新 1 行。
SQL>
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
会话已更改。
SQL>
SQL> select * from test;
ID NAME CRDATE UDATE
---------- -------------------- ------------------- -------------------
100 xx 2016-01-01 00:00:00 2017-09-25 10:39:39
SQL>
SQL> drop table test purge;
表已删除。
二、跨表更新modifytime触发器
create table m(mid int, modifytime date);
create table t(id int, mid int, c1 int, c2 int);
create table r(rid int, refid varchar(10), refname varchar(10));
insert into m(mid) select rownum from DUAL connect by rownum <=10;
insert into t(id,mid)
select rownum, mid from m, (select rownum from DUAL connect by rownum <= 10) x;
begin
insert into r(rid, refid, refname) values(1,'r1','XXX');
insert into r(rid, refid, refname) values(2,'r1','YYY');
insert into r(rid, refid, refname) values(3,'r1','ZZZ');
insert into r(rid, refid, refname) values(4,'r2','XXX');
insert into r(rid, refid, refname) values(5,'r2','YYY');
insert into r(rid, refid, refname) values(6,'r2','ZZZ');
insert into r(rid, refid, refname) values(7,'r2','XXX');
insert into r(rid, refid, refname) values(8,'r2','YYY');
insert into r(rid, refid, refname) values(9,'r2','ZZZ');
end;
/
update t set c1 = mod(dbms_random.value() * 10 + 1 ,2) + 3;
update t set c2 = mod(dbms_random.value() * 10 + 1 ,5) + 4;
create or replace trigger tri_r_update
before update on r
for each row
begin
update m
set modifytime = sysdate
where exists(select * from t where m.mid = t.mid and c1 = :new.rid);
update m
set modifytime = sysdate
where exists(select * from t where m.mid = t.mid and c2 = :new.rid);
end;
/
create index ix_t_c1 on t(mid,c1);
create index ix_t_c2 on t(mid,c2);
create index ix_m_mid on m (mid);
/*
select * from t where c2 = 9
select * from m
SELECT * FROM r
update r set refname = '099999' where rid = 9
update m set modifytime = null
*/
drop table m purge;
drop table t purge;
drop table r purge;
本表触发更新modifytime,跨表更新modifytime 触发器的更多相关文章
- Django之model联表:一对多、跨表操作,联表查询
表结构概述 model.py : class Something(models.Model): name = models.CharField(max_length=32) class UserTyp ...
- MySQL把一个大表拆分多个表后,如何解决跨表查询效率问题
大表分表后每个表的结构相同,可以用sql的union 比如a,b表结构相同可以通过union来联接 select * from aunion allselect * from bwhere.... 其 ...
- django(3) 一对多跨表查询、ajax、多对多
1.一对多跨表查询获取数据的三种形式:对象.字典.元组 例:有host与business两张表,host与business的id字段关联,business在host表中的对象名是b, 通过查询hos ...
- django models的点查询/跨表查询/双下划线查询
django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...
- django orm 基于双下划线的跨表查询
一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...
- Mysql跨表更新 多表update sql语句总结
Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是P ...
- mysql 去重,跨表更新,跨表删除
一.去重 1.查询出重复的记录 CREATE TABLE push_log_full_2013_10_30_tmp SELECT * FROM `push_log_full` WHERE time B ...
- Mysql跨表更新
Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法,需要的朋友可以参考下 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Pr ...
- update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新
1.有时在做项目时会有些期初数据更新,从老系统更新到新系统.如果用程序循环从老系统付给新系统. 2.有时在项目中需要同步程序,或者自动同步程序时会有大量数据更新就可能用到如下方法了. 3.为了做分析, ...
随机推荐
- Oracle游标详解大全
本文出自: http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html -- 声明游标:CURSOR cursor_name IS sel ...
- jmeter 压测最近的心得体会
笔者14年入坑测试,截止到17年年初一直在游戏公司,压测,我都没有怎么用过,特别是jmeter去压测,自己学习,可是先找到切入点,于是乎, 其实也算是我学习后,先找一个更大的平台吧,我聊了几个游戏公司 ...
- Netty4 学习笔记之一:客户端与服务端通信 demo
前言 因为以前在项目中使用过Mina框架,感受到了该框架的强大之处.于是在业余时间也学习了一下Netty.因为Netty的主要版本是Netty3和Netty4(Netty5已经被取消了),所以我就直接 ...
- angularjs之ui-bootstrap的Datepicker Popup实现双日期选择控件
最开始使用ui-bootstrap的Datepicker Popup日期选择插件实现双日期选择时间范围时,在网上搜了一些通过JS去实现的方法,不过后来发现可以不必通过JS去处理,只需要使用其自身的属性 ...
- hdu1754线段树的单点更新区间查询
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- python常见模块命令(os/sys/platform)
一.Os Python的标准库中的os模块主要涉及普遍的操作系统功能.可以在Linux和Windows下运行,与平台无关. os.sep 可以取代操作系统特定的路径分割符. os.name字符串指示你 ...
- zoj3432 Find the Lost Sock 亦或的运用
只有一个出现奇数次,答案就是它了: #include<cstdio> #include<cstdlib> #include<iostre ...
- 错误:Cannot set property 'innerHTML' of null
360浏览器代码编辑器里提示错误:Cannot set property 'innerHTML' of null 原因是代码执行时要调用的内容不存在
- mySQL、mariaDB、noSQL、SQL server、redis之间是什么关系?
1.首先,从数据库类型上分类,mySQL.mariaDB.SQL server这3种属于关系型数据库. noSQL属于非关系型数据库,被视为数据库革命者. redis成为内存缓存数据库,而前面的两种类 ...
- 【转载】jQuery手机移动端触屏日历日期选择
文章转载自 科e互联 http://www.internetke.com/ 原文链接:http://www.internetke.com/effects/css3/2015/0120/1222.htm ...