创建一个和Suppliers内容相同的表t_suppliers,写一个trigger,实现当suppliers 表增删,修改时t_suppliers进行相同的变化,保障两个表的数据一模一样。帮我看看怎么写

解决方案 »

  1.   

    用物化视图好了,
    drop table t_suppliersCREATE MATERIALIZED VIEW LOG ON Suppliers;CREATE MATERIALIZED VIEW mv_emp_pk
                 REFRESH FAST START WITH SYSDATE 
                NEXT  SYSDATE + 1/24/60
                WITH PRIMARY KEY 
                AS SELECT * FROM t_suppliers;
      

  2.   

    写错了一点
    CREATE   MATERIALIZED   VIEW   t_suppliers
                              REFRESH   FAST   START   WITH   SYSDATE   
                            NEXT     SYSDATE   +   1/24/60 
                            WITH   PRIMARY   KEY   
                            AS   SELECT   *   FROM   Suppliers; 
      

  3.   

    創建相同的表
    create table T_Suppliers as select * from Suppliers where 1 <> 1
    創建三個觸發器在Suppliers表上 
    before insert,update, delete
      

  4.   

    1.创建一个表视图与该表永远保持一致。
    2.创建insert,update,delete触发器
      

  5.   

    create or replace trigger students_tri
    before insert or update or delete on students
    for each row
    begin
    if inserting then
    insert into t_students values (:new.cname,:new.course,:new.score);
    end if;
    if updating then
    update t_students set cname=:new.cname,course=:new.course,score=:new.score where cname=:old.cname
    and course=:old.course and score=:old.score;
    end if;
    if deleting then
    delete t_students where cname=:old.cname and course=:old.course and score=:old.score;;
    end if;
    end;
    /
      

  6.   

    create or replace trigger trig_Suppliers
    before insert or update or delete on Suppliers for each row 
    as
      i number(8) default 0;
    begin
      select 1 into i from user_tables where Table_name = 't_suppliers';
      if i = 0 then
        create table t_suppliers as select * from suppliers;
      end if ;
      
      if inserting then 
        insert into t_suppliers values (:new.c1,:new.c2,:new.c3); 
      end if; 
      if updating then 
        update t_suppliers set c1=:new.c1,c2=:new.c2,c3=:new.c3 where c1=:old.c1;
      end if; 
      if deleting then 
        delete t_suppliers where c1=:old.c1; 
      end if; 
    end;
    /