其实有时候需求是这样: 我不需要原始的数据,在我每次大量插入前,都删除原来表中的记录?
删除是否有其他的影响,比如说效率等等.
如果可以的话,实现的时候写一个触发器是不是会比较好?

解决方案 »

  1.   

    如果没有什么关联,外键的话,建议用truncate来删除数据
      

  2.   

    如果是全表删除用TRUNCATE就可以,对效率不会产生影响
      

  3.   

    你的表数据是否想保留一段时间呢。
    如果是单纯的运算过程中用的临时表,建议如下建立临时表。
    create global temporary table Temp1
    (
      name     NVARCHAR2(10) not null,
      age      number not null
    )
    on commit delete rows;
      

  4.   

    truncate的功能可以拆分为:dropping + re-creating a table,但truncate的效率要高。因为truncate无须考虑表索引、约束、触发器等的重建,truncate只删除数据。TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限。
    1、先将不需要删除的数据复制到一个临时表中2、truncate table 表3、将不需要删除的数据复制回来。
      

  5.   

    理论上truncate的效率高。建立LZ说的更清楚一点。、
    为什么要这样做。
    每次删除的记录大约有多少
    每次插入的记录有多少