oracle triggers 实现两个结构相同的表的数据级联更新操作
首先创建两个结构相同的表
-- Create table
create table TABLE_TEMP
(
userid NUMBER not null,
username NVARCHAR2(50),
userno NVARCHAR2(60),
cardid NVARCHAR2(18),
createdate DATE,
redate DATE,
month VARCHAR2(6),
amount NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 16
next 8
minextents 1
maxextents unlimited
);
第二个表结构
-- Create table
create table TEST_TABLE_TEMP
(
userid NUMBER not null,
username NVARCHAR2(50),
userno NVARCHAR2(60),
cardid NVARCHAR2(18),
createdate DATE,
redate DATE,
month VARCHAR2(6),
amount NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 16
next 8
minextents 1
maxextents unlimited
);
其中这两个表的ID都是不能自动增长的属性 没有建立sequences 序列以及自动增长的触发器
建立触发器:
create or replace trigger triggers_table_tempToTemp
before insert or update or delete
on table_temp for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean; begin if inserting then
insert into test_table_temp(userid,UserName,userno,cardid,createdate,redate,month,amount)
values(:NEW.userid,:NEW.UserName,:NEW.userno,:new.cardid,:NEW.createdate,:NEW.redate,:NEW.month,:NEW.amount);
elsif updating then
update test_table_temp set userid=:NEW.userid,
UserName=:NEW.UserName,userno=:NEW.userno,
cardid=:NEW.cardid ,createdate=:NEW.createdate,
redate=:NEW.redate,
month=:NEW.month,
amount=:NEW.amount
where USERID=:OLD.USERID;
elsif deleting then
delete from test_table_temp where userid=:OLD.userid;
end if;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
--执行报错,错误信息:ORA-04084 无法更改此触发器类型的NEW值
--把触发器的after改成before 触发
--实现数据增删改 同时实现两个数据表同步信息
测试数据
insert into TABLE_temp(userid,USERNAME,USERNO,CARDID,CREATEDATE,REDATE,MONTH,AMOUNT)
values('1','小晴','20140408','201404087976',to_date('2014-04-08','yyyy-mm-dd'),to_date('2014-04-08','yyyy-mm-dd'),'201404','100000') update TABLE_temp set USERNAME='小清新' where userid=1
delete from TABLE_temp where userid=1
数据库中把一个表中的数据复制到另一个表中 如果不用其他方法直接用SQL语句实现:
1、如果是整个表复制如下:
insert into table1 select * from table2
2、如果是有选择性的复制数据如下:
insert into table1(column1,column2,column3...) select column1,column2,colunm3... from table2
3、一个数据库中的表中的数据复制到另一个数据库中的一个表,使用方法如下:
insert into 数据库A.dbo.table1(col1,col2,col3...) select col1,col2,col3... from 数据库B.dbo.table2
oracle triggers 实现两个结构相同的表的数据级联更新操作的更多相关文章
- oracle 批量更新之将一个表的数据批量更新至另一个表
oracle 批量更新之将一个表的数据批量更新至另一个表 CreationTime--2018年7月3日17点38分 Author:Marydon Oracle 将一个表的指定字段的值更新至另一个 ...
- SQLSEVER 不同服务器下两个结构相似的表实现数据同步(触发器)
1.建立链接服务器 在ServerA 中创建指向ServerB的链接服务器,并做好账号映射.addlinkedserver存储过程创建一个链接服务器,参数详情参见官方文档. 第1个参数LNK_Serv ...
- SQL 两张结构一样的表合并查询 .
select * from table1 union all select * from table2 union all 是所有的都显示出来: select * from table1 union ...
- SQL 将两个结构相同的表合并到成一个表
select * into 新表名 from (select * from T1 union all select * from T2) 这个语句可以实现将合并的数据追加到一个新表中. 不合并重复数据 ...
- Oracle数据库中将一个数据库中一张表的数据导入到另外一张表
INSERT INTO DBTHNEW.L_MEMBER_ROLE_REL SELECT *FROM DBTH.L_MEMBER_ROLE_REL
- JDBC获得DB2表结构并且将表中数据脱敏后转移的程序示例
完整项目地址:https://github.com/zifeiy/totomi 代码示例: import java.io.File; import java.io.FileInputStream; i ...
- mybatis+Oracle 批量插入数据,有数据做更新操作
<!-- 批量添加 --> <insert id="batchAdd" parameterType="java.util.List"& ...
- Oracle 给表添加主键和使ID自增、触发器、创建结构一样的表
1.关于主键:在建表时指定primary key字句即可:create table test( id number(6) primary key, name varchar2(30));如果是对于已经 ...
- oracle、mysql、sybase和sqlserver复制表结构和数据
Sql Server(sybase): 1.复制表结构: 新建表student2,并且结构同表syn_xj_student一致.Sql语句如下: 2.复制表数据,并排除俩表中相同的数据: insert ...
随机推荐
- Hibernate(三)结构-配置文件-实体映射及配置文件
一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中 ...
- JavaScript debugger 语句
实例 开启 debugger ,代码在执行到第三行前终止. var x = 15 * 5; debugger; document.getElementbyId("demo").in ...
- 了解NoSQL
近期总是提到NoSQL这个词汇.起初仅仅知道,应该是一种数据库而已,仅仅是这样的数据库眼下符合当前互联网的需求,应用比較广泛.逐渐发现,当前的各个公司在招聘信息中会有掌握NoSQL的优先等要求. ...
- git server
选择Git服务器部署策略 找了一圈,发现如下方法来架设Git服务器: Git Candy:http://github.com/Aimeast/GitCandy/ AE大神的作品, Git Candy© ...
- Android 英文文档下载地址
通过英文Android API学习Android技术是一个不错选择,当然养鸡的专业户要小心了,以下分享一些下载英文文档的链接(请使用迅雷下载): https://dl-ssl.google.com/a ...
- Centos6.5搭建dhcpd服务
dhcpd动态获取ip地址,对于小型局域网很便利的.在不大的网络社会静态ip也是不错的! 环境 centos6.5 10.10.24.1 (dns-server) winxp sp3 (clie ...
- git版本库管理介绍,撤销git pull操作
Git是分布式版本控制系统,GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中心. 大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实 ...
- jquery checkbox选框操作
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- 关于iOS 类扩展Extension的进一步理解
很多人可能会问 iOS的分类和扩展的区别,网上很多的讲解,但是一般都是分类讲的多,而这也是我们平常比较常用的知识:但是,对于扩展,总觉得理解的朦朦胧胧,不够透彻. 这里就讲一下我自己的理解,但是这个 ...
- 【LeetCode】22. Generate Parentheses (2 solutions)
Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of ...