Difference between Truncate and Deete .

Hi All,
Can any one pls tell me,
what is the main difference between Truncate and Delete.
Thanks in advance ,
Sanjeev.

Deletes perform normal DML,it take locks on rows, they generate redo and they require segments in the UNDO tablespace.
If a mistake is made a rollback can be issued to restore the records prior to a commit.
Truncates are DDL. A truncate moves the High Water Mark of the table back to zero so all extents bar the initial are de-allocated from the table

Similar Messages

  • Whats the difference between ALL and FIRST  in Multi Inserting

    SQL> Drop Table Sales;
    Table dropped.
    SQL> Drop Table Accounts;
    Table dropped.
    SQL> Drop Table Research;
    Table dropped.
    SQL> Create Table Sales As Select * From Emp;
    Table created.
    SQL> Create Table Accounts As Select * From Emp;
    Table created.
    SQL> Create Table Research As Select * From Emp;
    Table created.
    SQL> Truncate Table Sales;
    Table truncated.
    SQL> Truncate Table Accounts;
    Table truncated.
    SQL> Truncate Table Research;
    Table truncated.
    SQL> Select * From Sales;
    no rows selected
    SQL> Select * From Accounts;
    no rows selected
    SQL> Select * From Research;
    no rows selected
    SQL> Insert All
      2  When Deptno=10 Then
      3  Into Sales (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      4  When Deptno=20 Then
      5  Into Accounts (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      6  When Deptno=30 Then
      7  Into Research (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      8  Select * From Emp
      9  .
    SQL> /
    16 rows created.
    SQL> Select * From Sales;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7782 CLARK      MANAGER        7839 09-JUN-81       100                  10
         7839 KING       PRESIDENT           17-NOV-81       100                  10
         7934 MILLER     CLERK          7782 23-JAN-82       100                  10
         7999 ABCDEFGH   JOB            7839 09-FEB-06       100         0        10
    4 rows selected.
    SQL> Select * From Accounts;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7901 SMITH      CLERK          7902 17-DEC-80       100                  20
         7566 JONES      MANAGER        7839 02-APR-81       100                  20
         7788 SCOTT      ANALYST        7566 19-APR-87       100                  20
         7876 ADAMS      CLERK          7788 23-MAY-87       100                  20
         7902 FORD       ANALYST        7566 03-DEC-81       100                  20
          123                                                                     20
    6 rows selected.
    SQL> Select * From Research;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7499 ALLEN      SALESMAN       7698 20-FEB-81       100       300        30
         7521 WARD       SALESMAN       7698 22-FEB-81       100       500        30
         7654 MARTIN     SALESMAN       7698 28-SEP-81       100      1400        30
         7698 BLAKE      MANAGER        7839 01-MAY-81       100                  30
         7844 TURNER     SALESMAN       7698 08-SEP-81       100         0        30
         7900 JAMES      MANAGER        7698 03-DEC-81       100                  30
    6 rows selected.
    SQL> Truncate Table Sales;
    Table truncated.
    SQL> Truncate Table Accounts;
    Table truncated.
    SQL> Truncate Table Research;
    Table truncated.
    SQL> Insert First
      2  When Deptno=10 Then
      3  Into Sales (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      4  When Deptno=20 Then
      5  Into Accounts (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      6  When Deptno=30 Then
      7  Into Research (Empno,Ename,Job,Mgr,Hiredate,Sal,Comm,DeptNo)
      8  Select * From Emp
      9  /
    16 rows created.
    SQL> Select * From Sales;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7782 CLARK      MANAGER        7839 09-JUN-81       100                  10
         7839 KING       PRESIDENT           17-NOV-81       100                  10
         7934 MILLER     CLERK          7782 23-JAN-82       100                  10
         7999 ABCDEFGH   JOB            7839 09-FEB-06       100         0        10
    4 rows selected.
    SQL> Select * From Accounts;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7901 SMITH      CLERK          7902 17-DEC-80       100                  20
         7566 JONES      MANAGER        7839 02-APR-81       100                  20
         7788 SCOTT      ANALYST        7566 19-APR-87       100                  20
         7876 ADAMS      CLERK          7788 23-MAY-87       100                  20
         7902 FORD       ANALYST        7566 03-DEC-81       100                  20
          123                                                                     20
    6 rows selected.
    SQL> Select * From Research;
        EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
         7499 ALLEN      SALESMAN       7698 20-FEB-81       100       300        30
         7521 WARD       SALESMAN       7698 22-FEB-81       100       500        30
         7654 MARTIN     SALESMAN       7698 28-SEP-81       100      1400        30
         7698 BLAKE      MANAGER        7839 01-MAY-81       100                  30
         7844 TURNER     SALESMAN       7698 08-SEP-81       100         0        30
         7900 JAMES      MANAGER        7698 03-DEC-81       100                  30
    6 rows selected.Both inserting insert the same records then whats the difference between ALL and FIRST clause in multi insert DML
    Khurram Siddiqui
    [email protected]

    Hello
    From the docs:
    ALL
    If you specify ALL, then Oracle evaluates each WHEN clause regardless of the results of the evaluation of any other WHEN clause. For each WHEN clause whose condition evaluates to true, Oracle executes the corresponding INTO clause list.
    FIRST
    If you specify FIRST, then Oracle evaluates each WHEN clause in the order in which it appears in the statement. For the first WHEN clause that evaluates to true, Oracle executes the corresponding INTO clause and skips subsequent WHEN clauses for the given row.
    ELSE clause
    For a given row, if no WHEN clause evaluates to true:
    * If you have specified an ELSE clause, then Oracle executes the INTO clause list associated with the ELSE clause.
    * If you did not specify an else clause, then Oracle takes no action for that row.
    See Also:
    "Multitable Inserts: Examples"
    Restrictions on Multitable Inserts
    * You can perform multitable inserts only on tables, not on views or materialized views.
    * You cannot perform a multitable insert into a remote table.
    * You cannot specify a table collection expression when performing a multitable insert.
    * In a multitable insert, all of the insert_into_clauses cannot combine to specify more than 999 target columns.
    * Multitable inserts are not parallelized in a Real Application Clusters environment, or if any target table is index organized, or if any target table has a bitmap index defined on it.
    * Plan stability is not supported for multitable insert statements.
    * The subquery of the multitable insert statement cannot use a sequence.
    So given this the following example shows the difference:
    SQL> CREATE TABLE dt_test_insert_base as select rownum id from dba_objects where rownum <=20
      2  /
    Table created.
    SQL> CREATE TABLE dt_test_insert_1 (id number)
      2  /
    Table created.
    SQL> CREATE TABLE dt_test_insert_2 (id number)
      2  /
    Table created.
    SQL>
    SQL> INSERT ALL
      2     WHEN rownum <=15 THEN
      3             INTO dt_test_insert_1 (id)
      4     WHEN rownum >=10 THEN
      5             INTO dt_test_insert_2 (id)
      6  SELECT
      7     ID
      8  FROM
      9     dt_test_insert_base
    10  /
    26 rows created.
    SQL>
    SQL> SELECT * from dt_test_insert_1
      2  /
            ID
             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            12
            13
            14
            15
    15 rows selected.
    SQL> SELECT * from dt_test_insert_2
      2  /
            ID
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
    11 rows selected.
    SQL>
    SQL> TRUNCATE TABLE dt_test_insert_1
      2  /
    Table truncated.
    SQL> TRUNCATE TABLE dt_test_insert_2
      2  /
    Table truncated.
    SQL>
    SQL> INSERT FIRST
      2     WHEN rownum <=15 THEN
      3             INTO dt_test_insert_1 (id)
      4     WHEN rownum >=10 THEN --This condition is ignored until the value of id is > 15
      5             INTO dt_test_insert_2 (id)
      6  SELECT
      7     ID
      8  FROM
      9     dt_test_insert_base
    10  /
    20 rows created.
    SQL> SELECT * from dt_test_insert_1
      2  /
            ID
             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            12
            13
            14
            15
    15 rows selected.
    SQL> SELECT * from dt_test_insert_2
      2  /
            ID
            16
            17
            18
            19
            20HTH
    David

  • Difference between Null and null?

    What is the difference between null and NULL?
    When is each used?
    Thanks,

    veryConfused wrote:
    There is a null in java, but no NULL. null means no value. However, when assigning value, the following is different:Although the empty String has no special role. Null means, the referential type is not assigned (doesn't refer) to a specific object. The empty String is just another object though, so seeing it or pointing it out as something special when it actually isn't at all (no more special than new Integer(0) or new Object[0]) just adds to the confusion.

  • Difference between GUI_UPLOAD and WS_UPLOAD

    Hi,
    Please make me clear about the difference between GUI_UPLOAD and WS_UPLOAD. In which cases we need to use these modules...??
    Thanks,
    Satish

    I would suggest to always use the GUI_UPLOAD.  I say this because this is the function module which is used in the GUI_UPLOAD method of the class CL_GUI_FRONTEND_SERVICES.   Really, you should probably use the class/method instead of the function module.
      data: filename type string.
      filename = p_file.
      call method cl_gui_frontend_services=>gui_upload
             exporting
                  filename                = filename
                  filetype                = 'ASC'
             changing
                  data_tab                = iflatf
             exceptions
                  file_open_error         = 1
                  file_read_error         = 2
                  no_batch                = 3
                  gui_refuse_filetransfer = 4
                  no_authority            = 6
                  unknown_error           = 7
                  bad_data_format         = 8
                  unknown_dp_error        = 12
                  access_denied           = 13
                  others                  = 17.
    Regards,
    Rich Heilman

  • Difference between char and varchar, also the difference between varchar2

    Hi,
    Can anyone explain me the difference between char and varchar, and also the difference between varchar and varchar2...

    Varchar2 is variable width character data type, so if you define column with width 20 and insert only one character to tis column only, one character will be stored in database. Char is not variable width so when you define column with width 20 and insert one character to this column it will be right padded with 19 spaces to desired length, so you will store 20 characters in the dattabase (follow the example 1). Varchar data type from Oracle 9i is automaticlly promoted to varchar2 (follow example 2)
    Example 1:
    SQL> create table tchar(text1 char(10), text2 varchar2(10))
    2 /
    Table created.
    SQL> insert into tchar values('krystian','krystian')
    2 /
    1 row created.
    SQL> select text1, length(text1), text2, length(text2)
    2 from tchar
    3 /
    TEXT1 LENGTH(TEXT1) TEXT2 LENGTH(TEXT2)
    krystian 10 krystian 8
    Example 2:
    create table tvarchar(text varchar(10))
    SQL> select table_name,column_name,data_type
    2 from user_tab_columns
    3 where table_name = 'TVARCHAR'
    4 /
    TABLE_NAME COLUMN_NAME DATA_TYPE
    TVARCHAR TEXT VARCHAR2
    Best Regards
    Krystian Zieja / mob

  • The difference between Lion and Mountain Lion

    Can some one explain to me the difference between Lion and Mtn Lion? I'm currently 10.6.8 Is it beneficiall for me to upgrade?

    Mountain Lion is an enhanced version of previous OS X and so that is Mavericks.
    About upgrading it all depends on what your needs are and if your hardware supports it.
    System requirements for OS X Lion
    System requirements for OS X Mountain Lion
    OS X Mavericks: System Requirements
    Please check also applications compatibility. From Lion onward, you cannot run PPC application.

  • The difference between N80 and N80IE ?

    What is the difference between M80 and N80ie?

    02-Jan-2007
    07:45 PM
    korngear wrote:
    The Nokia N80 Internet Edition is a new version of this handset with the same hardware as the normal N80. It is due for release in Q4 of 2006 and will be available in Patina Bronze or Pearl Black, and has the following additional software included.
    Yahoo Go! for Mobile
    Flickr
    Some Amazon Branded Software
    'Download!' App management
    Internet Telephone - SIP VOIP Frontend
    WLAN Wizard
    Gizmo VOIP - Gizmo Project VOIP Frontend.
    \\en.wikipedia.org//
    @Korngear
    Thanks.
    Could N80 be upgraded to N80IE?

  • The difference between SFP+ and X2

    Dear Expert,
    I need to know what is the difference between SFP+ and X2! and can I use SFP+ card and module instead of X2?
    Thanks,
    Mohammad Saeed

    Hi,
    They are both used for 10Gig interfaces.  The difference is the connector type.
    SFP+ is LC and X2 is SC.
    You can not put an SFP+ into an X2 slot or X2 optic into a SFP+.
    HTH

  • Difference between ok_code and sy-ucomm

    Hi,
    Can any one tell me the difference between ok_code and sy-ucomm

    Hi,
    Actually OK_CODE and SY-Ucomm are the same. But experts suggest use of OK code for following reason:
    In each PAI event that a user triggers by choosing either a pushbutton on the screen or an element in a GUI status, the corresponding function code is placed into the system field SYST-UCOMM or SY-UCOMM and placed in the OK_CODE field (as long as the function code is not empty). Empty function codes are placed in neither the SY-UCOMM field nor the OK_CODE field.
    In your ABAP programs, you should work with the OK_CODE field instead of SY-UCOMM. There are two reasons for this: Firstly, the ABAP program has full control over fields declared within it, and secondly, you should never change the value of an ABAP system field. However, you should also always initialize the OK_CODE field in an ABAP program for the following reason:
    In the same way that the OK_CODE field in the ABAP program and the system field SY-UCOMM receive the contents of the corresponding screen fields in the PAI event, their contents are also assigned to the OK_CODE screen field and system field SYST-UCOMM in the PBO event. Therefore, you must clear the OK_CODE field in the ABAP program to ensure that the function code of a screen is not already filled in the PBO event with an unwanted value. This is particularly important when the next PAI event can be triggered with an empty function code (for example, using ENTER). Empty function codes do not affect SY-UCOMM or the OK_CODE field, and consequently, the old field contents are transported.

  • What is difference between abstraction and encapsulation ?

    Hi,
    I am trying to figure out the difference between abstraction and encapsulation but confused.
    Both are used for data hiding then what is the exact difference ?
    Thanks.

    Tushar-Patel wrote:
    I am trying to figure out the difference between abstraction and encapsulation but confused.
    Both are used for data hiding then what is the exact difference ?This is the picture I have:
    When you encapsulate something you get an inside and an outside. The outside is the abstraction. It describes how the encapsulated entity behaves viewed from the outside. This is also called the type. Hidden inside is the implementation. It holds detail information about how the type's behaviour is accomplished.
    It's a very simplified picture but I think it's quite accurate and it works for me.

  • What is difference between Iterator and Collection Wrapper?

    Hi all,
                  I dont understand the actual difference between Iterator and Collection Wrapper. I observed both are used for the same purpose. Could any one please let me know when to use Collection Wrapper and when to use Iterator??
    Thanks,
    Chinnu.

    L_Kiryl is right.
    Collections support global iteration (through collection->get_next( )) and local iteration (through iterator->get_next( )).
    Each collection has a focus object. Initially, the first object has the focus.
    Any global iteration moves the focus, which is published by the event FOCUS_CHANGED of the collection.
    If you want to iterate on the collection without moving the focus (and without triggering timeconsuming follow-up processes) you can use local iteration. To do so, request an iterator object from the collection and use this to iterate.
    And one more advantage of using iterator: it takes care of deleted entities. If you use global iteration then when you reach deleted entity it will be an exception. But there is no exception with iterator in the same situation.

  • What is difference between modify and update i am using

    hi
    what is difference between mofify and update
    my requiremen is to have three condition checkec while mofifying or updating from a internal table
    the three fields are
    cus no
    status
    date these all are primary key in the database table
    so which sould i use modify or update
    there might be entry already existing in database table or new entry to be created if already existin it should check on the primary keys and updatat if not it should add a record
    pls suggest whihc to use and how to implement the check on teh threee primary key
    like if modify ztable from table it_test
    now where condition ? can be used or not with modify? and if yes how
    if not should i use update will update create a new entry if no entry is there and please give syntex
    regards
    Arora

    Hi Nishant Arora,
    Modify: It works in performing two actions.
    They are: Insert + Update.
    For Example If a record that is exited in database, so you are modifying that record, it updates that particular record.
    Similarly, If the is not existed in the database, you are modifying it, it inserts a new record.
    Update: Update means just it updates the status, I mean it only updates the record. It doesn't inserts any new record if that particular record is not present in the database.
    These are the cases you need to write these statements.
    Syntaxes: :
    Go through this links please.,
    http://help.sap.com/saphelp_nw04/helpdata/en/e7/968aa8b2384dd9835f91e7f8470064/content.htm
    http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb35eb358411d1829f0000e829fbfe/content.htm
    Reward points if useful
    Cheers,
    Swamy Kunche
    Edited by: Swamy Kunche on Jun 11, 2008 2:41 PM

  • What is Difference between SXMB_MONI and SXMB_MONITOR?

    what is Difference between SXMB_MONI and SXMB_MONITOR?
    Can any explain to this question.please?

    Hello,
    Both are same.
    SXMB_MONI is area menu which will contain all multiple transactions pertaining to monitoring.
    SXMB_MONI contains some functions viz monitoring for Bridging, Archived Msgs, Job overview, persistence layer analysis.
    SXI_monitor directly leads to the message monitoring for the IS, which is part of the SXMB_MONI.
    SXI_MONITOR directly executes the monitoring report.
    Thanks,
    Satya

  • Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause? Difference between Enterprise and SE?

    We’re seeing the following issue: sql - Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause? - Stack Overflow (posted by a colleague of mine) and are curious to know if this behaviour is due to a difference between standard and enterprise, or could we doing something else wrong in our DB config.?
    We have also reproduced the issue on the following stacks:
    Oracle SE One 11.2.0.3 (with Spatial enabled)
    Redhat Linux 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    11.2.0.3.0 Standard Edition and 11.2.0.4.0 Standard Edition (both with Spatial enabled)
    Microsoft Windows Server 2003R2 Standard x64 Edition
    However, the SQL works fine if we try it on Oracle 11.2.0.3.0 *Enterprise* Edition.
    Any help or advice would be much appreciated.
    Kindest Regards,
    Kevin

    In my experience sdo_filter ALWAYS uses the spatial index, so that's not the problem. Since you did not provide the explain plans, we can't say for sure but I think yhu is right: Standard Edition can't use the bitmap operations, and thus it'll take longer to combine the results of the two queries (because the optimizer will surely split this OR up in two parts, then combine them).
    BTW: when asking questions about queries here, it would be nice if you posted the queries here as well, so that we do not have to check another website in order to see what you are doing. Plus it will probably get you more answers, because not everyone can be bothered to click on that link. It would also have been nice if you had posted your own answer on the other post here as well, because my recommendation would have been to use union all - but since you already found that out for yourself my recommendation would have been a little late.

  • What is the difference between #variable_name and :variable_name?

    Hi!
    What is the difference between #variable_name and :variable_name?
    I have found that if we use alphanumeric variable then :variable_name return value in quotes but #variable_name without quotes.
    Why it does not work in the same way for variable default values when variable is used in filter? (It works in mapping)
    I use variable in filter like T.OUT_DATE>convert(datetime,:LAST_UPDATE_DATE,121)
    When I use my variable in package and do refresh it works fine. But when I try to execute the same interface with variable default value I get error. Seems that variable name has been not changed to the value. It does not work with default value in quotes neither without quotes.
    Any ideas how to solve that?
    Thank you in advance!
    Edited by: user13278245 on Sep 15, 2010 4:34 AM

    Question is how to make it work with default value, when I execute interface standalone, not in package? And why it works in mapping but not in filter?
    + I have found that it works if source is Oracle. It doesn't work only for MS SQL source.
    Edited by: user13278245 on Sep 15, 2010 6:43 AM

Maybe you are looking for