DELPHI 4.0 C/S
INTERBASE 5.0
-----------------
프로그램을 다 짜놓고 정상적으로 작동하는 상태에서...트랜잭션을 사용해야 한다구 하더군요..
그래서 바꿨는데...음...되는건지 안되는건지 모르겠네요...
Procedure db_open(); :Procdure db_close();
begin :begin
with dm do : with dm do
begin : begin
database1.startranstion; : table1.close;
table1.open; : table2.close;
table2.open; : database1.commit;
end; : end;
end; :end;
이렇게 하구요...
폼을 create시킬때마다 db_open()해주고요..
폼을 close시킬때 db_close()해줬거든요..
근대 이렇게 나와요..
" NO USER TRANSACTION IS CURRENTLY IN PROGRESS "
무슨 문제인가요?
Table상에서 Fetch되는 row는 Server상에서 모두 Lock이 걸리게 됩니다.
이런 형태에서는 잘못하면 Dead Lock이 걸릴수 있는 여지도 제공을 하게되구요
그렇게 하지 마시고...
table의 변경된 내용을 저장하실때에만 transaction을 사용하심이
좀더 효율적인것 같은데....
예를 든다면...
Try
database1.starttransaction;
table1.post;
database1.Commit;
except
database1.Rollback;
end;
그리고 질문하신 오류메세지는 starttransaction이 발생하지 않았는데..
Rollback이나 commit을 호출하시면 발생하는 오류메세지입니다..
StartTransaction과 Commit또는 Rollback은 반드시 한 쌍으로
이루어져야 합니다......
즐거운 코딩되세요
김선호 께서 말씀하시기를...
> DELPHI 4.0 C/S
> INTERBASE 5.0
> -----------------
>
> 프로그램을 다 짜놓고 정상적으로 작동하는 상태에서...트랜잭션을 사용해야 한다구 하더군요..
>
> 그래서 바꿨는데...음...되는건지 안되는건지 모르겠네요...
>
> Procedure db_open(); :Procdure db_close();
> begin :begin
> with dm do : with dm do
> begin : begin
> database1.startranstion; : table1.close;
> table1.open; : table2.close;
> table2.open; : database1.commit;
> end; : end;
> end; :end;
>
> 이렇게 하구요...
>
> 폼을 create시킬때마다 db_open()해주고요..
>
> 폼을 close시킬때 db_close()해줬거든요..
>
> 근대 이렇게 나와요..
>
> " NO USER TRANSACTION IS CURRENTLY IN PROGRESS "
>
> 무슨 문제인가요?