两个表有两个字段名相同,为何我删除一个表数据 ,另一个表数据会自动删除呢!我没有建triiger  这两个表直接从另外资料库过来的(create table test from test@DB01),还请各位高手帮忙,急用!

解决方案 »

  1.   

    1 确认无触发器?2 是否有外键关系,外键定义有on delete cascade选项,可能引起连锁反应。
      

  2.   

    确认没有建触发器的话,那就肯定是这两表有外键相关联了,并且设置了on delete属性。
      

  3.   

    create table FTBMD141
    (
      WE_NO      VARCHAR2(13) not null,
      WE_SEQ     VARCHAR2(4) not null,
      WF_SEQ     VARCHAR2(16),
      LEFT_ISOK  VARCHAR2(1),
      RIGHT_ISOK VARCHAR2(1),
      UP_USER    VARCHAR2(10),
      UP_DATE    DATE
    )
    tablespace USERS
      pctfree 10
      pctused 40
      initrans 1
      maxtrans 255
      storage
      (
        initial 128K
        next 128K
        minextents 1
        maxextents 4096
        pctincrease 0
      );-- Create table
    create table FTBMD14
    (
      WE_NO      VARCHAR2(13) not null,
      WE_DATE    DATE,
      SIZE_SEQ   VARCHAR2(16),
      T_QTY      NUMBER(8,1),
      WE_TIME    NUMBER(8,1),
      OK_NG      VARCHAR2(1),
      MO_CLASSNO VARCHAR2(3),
      STA_G      NUMBER(8,1),
      SJ_G       NUMBER(8,1),
      UP_USER    VARCHAR2(10),
      UP_DATE    DATE
    )
    tablespace USERS
      pctfree 10
      pctused 40
      initrans 1
      maxtrans 255
      storage
      (
        initial 128K
        next 128K
        minextents 1
        maxextents 4096
        pctincrease 0
      );
    这个是两个的脚本
    没有任何关联
      

  4.   

    delete是在程序里执行的还是sqlplus里面执行的?
      

  5.   

    请楼主仔细检查配置和数据以及操作过程,不要因为一条数据产生一些结论,这存在偶然性,但是对于这类问题首先不要认为ORACLE有BUG的想法,从操作的细节上找到问题的根源。一般来说发生这种情况的只有几种可能性:
    1、触发器,你已经认定没有了
    2、依赖信息,你也认定没有了,这部分请再次通过导出以及查询依赖的方式确认清楚。
    3、其中一张表是物化视图,采用实时刷新方式
    4、使用了程序运行,两表同步操作
    5、自己误操作,或多终端操作造成的一些偶然现象。不过请楼主查看下两个表的数据版本,若已经找不到,现在再删除一条试一试,然后来找一下,删除以前,记录下当前服务器的时间,通过SYSDATE获取,假如你现在获取的时间点是:2010-05-01 15:56:23,那么确认好此时数据没有人动它,好删除掉它,看下是否两个表都删除掉了,如果真的删除掉了,查看版本(假如表名称叫做test):
    select versions_xid xid,
           versions_operation op,
           versions_startscn startscn,
           versions_endscn endscn,
           rowid,
           test.*
      from test versions 
      between scn timestamp_to_scn(to_timestamp('2010-05-01 15:56:23','YYYY-MM-DD HH24:MI:SS')) and maxvalue;
    分别查看下两个表那个时间点的数据是否与你想要的一致,另外查询回滚段信息,由谁登陆者提交,提交何种SQL:
    SELECT *
      FROM flashback_transaction_query t
      WHERE t.table_name='TEST';