안녕하세요...
또..질문이 생겼거든요..
그전부터 궁금했었던건데요...
만약에 다음과 같이 파라독스DB에서 쿼리를
이용해서 코딩을 했습니다...
첫번째 쿼리는 어떤사번에 대해서 지우고....두번째는
다시 어떤 사번에 대해서 입력 하는 쿼리입니다...
그런데 이놈이 파라독스디비라서 Commit,Rollback을
어떻게 해야될지 좀 막막하더라구요...
Orcle이나 SQL같으면 문제가 안되겠는데...
파라독스라서요..문제가 되네요....
얼마전에 QnA란에다 질문을 올렸는데...
파라독스에서는 근본적으로 Commit,RollBack이안된다고
그러더군요...정말로 파라독스에서는 안되는건지요..???
방법이 있다면 어떤 방법이 있는지 답해주시면...
다시한번 정말 감사하겠습니다....
with TmpSQL do begin
Close;
SQL.Clear;
SQL.Add(' Delete from insamaster ');
SQL.Add(' where 사번 = '''+Edit1.Text+''' ');
ExecSQL;
SQL.clear;
SQL.Add(' Insert into insamaster ');
SQL.Add(' (사번,성명,직책) ');
SQL.Add(' Values ');
SQL.Add(' (:사번,:성명,:직책) ');
paramByName('사번').AsString := Edit1.Text;
paramByName('성명').AsString := Edit2.Text;
paramByName('직책').AsString := Edit3.Text;
ExecSQL;
end;
> 안녕하세요...
> 또..질문이 생겼거든요..
> 그전부터 궁금했었던건데요...
> 만약에 다음과 같이 파라독스DB에서 쿼리를
> 이용해서 코딩을 했습니다...
> 첫번째 쿼리는 어떤사번에 대해서 지우고....두번째는
> 다시 어떤 사번에 대해서 입력 하는 쿼리입니다...
> 그런데 이놈이 파라독스디비라서 Commit,Rollback을
> 어떻게 해야될지 좀 막막하더라구요...
> Orcle이나 SQL같으면 문제가 안되겠는데...
> 파라독스라서요..문제가 되네요....
> 얼마전에 QnA란에다 질문을 올렸는데...
> 파라독스에서는 근본적으로 Commit,RollBack이안된다고
> 그러더군요...정말로 파라독스에서는 안되는건지요..???
방법이 있다면 어떤 방법이 있는지 답해주시면...
> 다시한번 정말 감사하겠습니다....
>
> with TmpSQL do begin
> Close;
> SQL.Clear;
> SQL.Add(' Delete from insamaster ');
> SQL.Add(' where 사번 = '''+Edit1.Text+''' ');
> ExecSQL;
>
> SQL.clear;
> SQL.Add(' Insert into insamaster ');
> SQL.Add(' (사번,성명,직책) ');
> SQL.Add(' Values ');
> SQL.Add(' (:사번,:성명,:직책) ');
> paramByName('사번').AsString := Edit1.Text;
> paramByName('성명').AsString := Edit2.Text;
> paramByName('직책').AsString := Edit3.Text;
> ExecSQL;
> end;
>
이재식 Wrote:
안녕하세요?
패러독스 역시 commit, rollback이 됩니다.
다만, translate이 dirtyRead여서 그렇지요.
저는 대개 이렇게 합니다.
메모기님은 하나의 쿼리 컴포넌트에 여러 연산(삭제,삽입)을
하셨는데요, 저는 삭제를 위한 쿼리컴포넌트 1개, 삽입을 위한
쿼리 컴포넌트 1개, 이렇게 해요.
그래서,
with Qeury1 do
begin
...
...
ExecSQL ;
end ;
with Qeury2 do
begin
...
...
ExecSQL ;
end ;
이렇게 한다음
try
Query1.ExecSQL ;
Query2.ExecSQL ;
DataBase1.Commit ;
except
DataBase1.RollBack ;
end ;
이렇게 하죠.
저역시 패러독스의 rollback, commit를 100%믿지는 않지만,
그러나, 제대로 됩니다.
다만, 위에서 이야기했듯, 패러독스는 dirtyRead라는 것.
그리고, 패러독스는 Table를 open하면 자동 commit이 수반되요.
즉, 여러 연산을 한다음 commit하기전에 오픈을 한다면
그 이후로는 rollback이 안되요.
왜냐하면, open자체에 commit이 수반되기 때문이죠.
한번 commit되면 아시다시피 다시 rollback를 시킬 수 없습니다.