sqlcmd1 := 'update Proc_management set Start_flag = ''N'' ';
sqlcmd1 := sqlcmd1 + 'WHERE switch_area like '''+ sw_area +'%'' ';
with query1 do
begin
SQL.Clear;
DatabaseName := 'CDR2001';
Close;
SQL.Add(sqlcmd1);
query1.ExecSQL;
end;
이렇게 코딩을 했습니다. 그런데 Update를 하고나서 DB에 Lock을 걸고 있습니다.
프로그램 외에 에뮬레이터나 TOAD같은걸로 DB를 건드리면 Lock을 걸고있다고
DB수정, 삭제, Insert가 안되는데 왜 그러지여??
부탁드립니다.(참고로 DB는 오라클입니다.)
항상 commit이나 rollback을 만나야 해당 Table에 Lock을 해제합니다.
따라서 Delphi로 구현하자면....
//
DB콤포넌트이름.StartTransaction;
.
insert, update, delete 등등 일련의 Transaction
.
DB콤포넌트Name.Commit( 혹은 Rollback);
//
이런 구조로 이루어져야 정상적일것 같습니다.
따라서 아래와 같은 경우
> sqlcmd1 := 'update Proc_management set Start_flag = ''N'' ';
> sqlcmd1 := sqlcmd1 + 'WHERE switch_area like '''+ sw_area +'%'' ';
DB콤포넌트이름.StartTransaction; // 이근처에 추가...
> with query1 do
> begin
> SQL.Clear;
> DatabaseName := 'CDR2001';
> Close;
> SQL.Add(sqlcmd1);
> query1.ExecSQL;
> end;
DB콤포넌트Name.Commit( 혹은 Rollback); //여기서 Transaction 종료
// Error 체크두 하셔서 Error 발생시 Rollback을 하시면 더 좋겠죠..
>
> 이렇게 코딩을 했습니다. 그런데 Update를 하고나서 DB에 Lock을 걸고 있습니다.
> 프로그램 외에 에뮬레이터나 TOAD같은걸로 DB를 건드리면 Lock을 걸고있다고
> DB수정, 삭제, Insert가 안되는데 왜 그러지여??
> 부탁드립니다.(참고로 DB는 오라클입니다.)