Oracle如何在对A表数据作操作时,将数据同步到B表?

Oracle如何在对A表数据作操作时,将数据同步到B表?需求如下:在对表A做数据操作时(增/删/改);将该条数据中的一个字段(例如Name)同步到B表中;让A表中的Nam... Oracle如何在对A表数据作操作时,将数据同步到B表?
需求如下:
在对表A做数据操作时(增/删/改);
将该条数据中的一个字段(例如Name)同步到B表中;
让A表中的Name字段与B表中的Name字段始终保持一致。
非专业DBA,回答请尽量详细,不胜感激!
展开
 我来答
badkano
2018-09-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部

不知道你表是什么样的,我就自己定义了,一个主表,一个备份表,创建:

--主表
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 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
grace23450
2018-09-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7081
采纳率:77%
帮助的人:2331万
展开全部
用触发器可以做到,但是不建议使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式