Q&A

  • 쿼리컴포넌트로 Update했을경우 질문입니다.
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는 오라클입니다.)

2  COMMENTS
  • Profile
    초보껄떡이 2001.11.24 02:16
    insert, update, delete 등의 작업은

    항상 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는 오라클입니다.)

  • Profile
    꼴통 2001.11.24 03:09
    초보껄떡이 wrote:

    > insert, update, delete 등의 작업은

    > 항상 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는 오라클입니다.)