اوراکل اپکس- commit اتوماتیک در اوراکل

Commit اتوماتيک در اوراکل

در هنگام اجراي دستورات DDL , DCL در oracle به صورت اتوماتيك commit مي گردند يعني بعد از انجام اين دستورات يك Transaction به پايان مي رسد. حال وقتي شما يكي از دستورات (DML (insert,update,delete را در اوراکل انجام دهيد و سپس بعد از آن يك دستور DCL يا DDL را در اوراکل انجام دهيد ناخواسته عمل commit رخ مي دهد.

DDL is executed logically like this:
begin
COMMIT;
do the ddl;
COMMIT;
exception
when others then
ROLLBACK;
RAISE;
end;
براي درك بهتر با مثال بيان مي كنم.

sql> conn scott/tiger
create table test(x1 int)
/
insert into test(x1) values(1)
/
insert into test(x1) values(2)
/
—DDL:
create table test2(x2 int)
/
insert into test(x1) values(3)
/
—DCL:
grant select on test to scott
/
يك session جديد در اواراکل ايجاد كنيد و قبلي را نبنديد.
sql> conn scott/tiger
select * from test
result:
1
2
3
همچنين خروج عادي از SQL*Plus اوراکل بدون درخواست commit و يا rollback ، باعث commit در اوراکل مي گردد. البته مي توان اين عمل را غير فعال كرد.

SQL> set autocommit on
SQL> show autocommit
autocommit IMMEDIATE
SQL> set autocommit 42
SQL> show autocommit
AUTOCOMMIT ON for every 42 DML statements
SQL> set autocommit off
 نكته : هنگامي كه از دستورات DDL در كدهاي PL/SQL خود در اوراکل استفاده مي كنيد هميشه بايد حواستان به كنترل DML هاي قبل از آن باشد.

 

Rate this post

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

keyboard_arrow_up
Oracle APEX Capabilities (OAC)