Oracle如何在对A表数据作操作时,将数据同步到B表?
Oracle如何在对A表数据作操作时,将数据同步到B表?需求如下:在对表A做数据操作时(增/删/改);将该条数据中的一个字段(例如Name)同步到B表中;让A表中的Nam...
Oracle如何在对A表数据作操作时,将数据同步到B表?
需求如下:
在对表A做数据操作时(增/删/改);
将该条数据中的一个字段(例如Name)同步到B表中;
让A表中的Name字段与B表中的Name字段始终保持一致。
非专业DBA,回答请尽量详细,不胜感激! 展开
需求如下:
在对表A做数据操作时(增/删/改);
将该条数据中的一个字段(例如Name)同步到B表中;
让A表中的Name字段与B表中的Name字段始终保持一致。
非专业DBA,回答请尽量详细,不胜感激! 展开
2个回答
展开全部
不知道你表是什么样的,我就自己定义了,一个主表,一个备份表,创建:
--主表
create table User_Info (
ID INTEGER not null,
UserName VARCHAR(30) not null,
PassWord VARCHAR(20) not null,
CreateDate Date not null,
Status INTEGER not null,
constraint PK_User_Info primary key (ID));
--备份表(表结构与主表一致)
create table User_Info_temp (
ID INTEGER not null,
UserName VARCHAR(30) not null,
PassWord VARCHAR(20) not null,
CreateDate Date not null,
Status INTEGER not null,
constraint PK_Usertemp_Info primary key (ID));
创建触发器:
create or replace trigger UserToTemp after insert or update or delete
on user_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
begin
if inserting then
insert into User_Info_temp
(ID, UserName, PassWord, CreateDate, Status)
values
(:NEW.ID, :NEW.UserName, :NEW.PassWord, :new.CreateDate, :NEW.Status);
elsif updating then
update User_info_temp
set ID = :NEW.ID,
UserName = :NEW.UserName,
PassWord = :NEW.PassWord,
Status = :NEW.Status
where id = :OLD.id;
elsif deleting then
delete from User_info_temp where id = :OLD.id;
end if;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
测试1:增,向主表增加一条数据:
insert into User_Info values (1,'张三','123456',sysdate,1);
commit;
此时备份表内容,说明同步增加数据成功:
测试2:将主表里张三改成李四,说明修改数据成功:
update User_Info set username='李四' where id=1;
commit;
测试3:删了主表里这条id=1的数据,说明删除数据成功:
delete from User_Info;
commit;
有不明白地方尽快追问。如果没解决问题并且被推荐了,请取消推荐后追问。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询