On Apr 27, 8:58 am, Michael Moore <michaeljmo...@gmail.com> wrote:
> That's not the way it should work. After you run the INSERT you should be
> able to do a SELECT, and see the records in table A. Other sessions will NOT
> see those records in TABLE A until you do the commit.
>
> I am guessing that you've got multiple sessions open (multiple sqlplus
> windows or multiple sql developer windows) and that your results are due to
> testing from different sessions.
>
> Make sure you are issuing all of your commands from the same session
> (window).
>
> Mike
>
>
>
> On Wed, Apr 27, 2011 at 8:15 AM, Dom <dolivas...@gmail.com> wrote:
> > I'm new to Oracle -- I've always used SQL Server, with autocommit
> > turned on.  My problem is the following two statements:
>
> > 1. insert into TableA (select * from TableB where rownum < 10);
> > 2. commit;
>
> > After I do the first, I can see the records TableA.  Then I do the
> > second command, and suddenly the records disappear.  Any ideas?
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Oracle PL/SQL" group.
> > To post to this group, send email to Oracle-PLSQL@googlegroups.com
> > To unsubscribe from this group, send email to
> > oracle-plsql-unsubscr...@googlegroups.com
> > For more options, visit this group at
> >http://groups.google.com/group/Oracle-PLSQL?hl=en- Hide quoted text -
>
> - Show quoted text -

I agree with Mike; a commit in the same session as the transaction
will preserve the transaction, not erase it:

SQL> create table tableb as select * From all_objects where rownum
<=500;

Table created.

SQL>
SQL> create table tablea as select * From tableb where 0=1;

Table created.

SQL>
SQL> insert into TableA (select * from TableB where rownum < 10);

9 rows created.

SQL>
SQL> select owner, object_name, object_id From tablea;

OWNER                          OBJECT_NAME
OBJECT_ID
------------------------------ ------------------------------
----------
SYS                            DUAL
258
PUBLIC                         DUAL
259
SYS                            SYSTEM_PRIVILEGE_MAP
311
PUBLIC                         SYSTEM_PRIVILEGE_MAP
313
SYS                            TABLE_PRIVILEGE_MAP
314
PUBLIC                         TABLE_PRIVILEGE_MAP
316
SYS                            STMT_AUDIT_OPTION_MAP
317
PUBLIC                         STMT_AUDIT_OPTION_MAP
319
SYS                            KOTTD
334

9 rows selected.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> select owner, object_name, object_id From tablea;

OWNER                          OBJECT_NAME
OBJECT_ID
------------------------------ ------------------------------
----------
SYS                            DUAL
258
PUBLIC                         DUAL
259
SYS                            SYSTEM_PRIVILEGE_MAP
311
PUBLIC                         SYSTEM_PRIVILEGE_MAP
313
SYS                            TABLE_PRIVILEGE_MAP
314
PUBLIC                         TABLE_PRIVILEGE_MAP
316
SYS                            STMT_AUDIT_OPTION_MAP
317
PUBLIC                         STMT_AUDIT_OPTION_MAP
319
SYS                            KOTTD
334

9 rows selected.

SQL>
SQL> truncate table tablea;

Table truncated.

SQL>
SQL> insert into TableA (select * from TableB where rownum < 10);

9 rows created.

SQL>
SQL> select owner, object_name, object_id From tablea;

OWNER                          OBJECT_NAME
OBJECT_ID
------------------------------ ------------------------------
----------
SYS                            DUAL
258
PUBLIC                         DUAL
259
SYS                            SYSTEM_PRIVILEGE_MAP
311
PUBLIC                         SYSTEM_PRIVILEGE_MAP
313
SYS                            TABLE_PRIVILEGE_MAP
314
PUBLIC                         TABLE_PRIVILEGE_MAP
316
SYS                            STMT_AUDIT_OPTION_MAP
317
PUBLIC                         STMT_AUDIT_OPTION_MAP
319
SYS                            KOTTD
334

9 rows selected.

SQL>
SQL> pause


Here we start a second session, query tablea, commit, then query
tablea again:

SQL> select * From tablea;

no rows selected

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> select * from tablea;

no rows selected

SQL>

We go back to the original session, issue a commit then query tablea:

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> select owner, object_name, object_id From tablea;

OWNER                          OBJECT_NAME
OBJECT_ID
------------------------------ ------------------------------
----------
SYS                            DUAL
258
PUBLIC                         DUAL
259
SYS                            SYSTEM_PRIVILEGE_MAP
311
PUBLIC                         SYSTEM_PRIVILEGE_MAP
313
SYS                            TABLE_PRIVILEGE_MAP
314
PUBLIC                         TABLE_PRIVILEGE_MAP
316
SYS                            STMT_AUDIT_OPTION_MAP
317
PUBLIC                         STMT_AUDIT_OPTION_MAP
319
SYS                            KOTTD
334

9 rows selected.

SQL>

We return to the second session and issue the same query as above;
this time we see data:

SQL> select owner, object_name, object_id From tablea;

OWNER                          OBJECT_NAME
OBJECT_ID
------------------------------ ------------------------------
----------
SYS                            DUAL
258
PUBLIC                         DUAL
259
SYS                            SYSTEM_PRIVILEGE_MAP
311
PUBLIC                         SYSTEM_PRIVILEGE_MAP
313
SYS                            TABLE_PRIVILEGE_MAP
314
PUBLIC                         TABLE_PRIVILEGE_MAP
316
SYS                            STMT_AUDIT_OPTION_MAP
317
PUBLIC                         STMT_AUDIT_OPTION_MAP
319
SYS                            KOTTD
334

9 rows selected.

SQL>

You're not issuing the commit from the session performing the insert.


David Fitzjarrell

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to