اوراکل اپکس- 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:
۱
۲
۳
همچنین خروج عادی از 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

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

نشانی ایمیل شما منتشر نخواهد شد.

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

فهرست
Oracle APEX Capabilities (OAC)