Table1, Table2 가 있다.
Table1 의 자료를 Table2 로 이동하려고 한다.

각 단계는
1. Table1 의 자료를 Table2 에 기록
2. Table1 의 자료 삭제
로 이루어진다.

이때, 1단계와 2단계 사이에 Table1 에 대한 INSERT 작업이 이루어지면
2단계에서 후에 기록된 자료까지 삭제가 된다.
Transaction 을 적용하더라도 그렇게 된다.

그러므로 이동시에는 전체 자료에 대한 표현을 쓰지말고 특정 데이타를 명시적으로 표시하여야 한다.

예제 코드)
procedure Button1Click( Sender: TObject);
var
  nCount : Integer;
begin
  try
    Conn1.BeginTrans;

    Conn1.Execute( 'INSERT INTO Table2(fDesc) SELECT fDesc FROM Table1', nCount );

    Conn2.Execute( 'INSERT INTO Table1(fDesc) VALUES(''TEST'')', nCount );

    Conn1.Execute( 'DELETE FROM Table1', nCount );

    Conn1.CommitTrans;
  except
    Conn1.RollbackTrans;
  end;
end;

'Windows > Database' 카테고리의 다른 글

[SQL] FOREIGN KEY 제약조건  (0) 2007.08.22
[SQL] UNION  (0) 2007.05.19

+ Recent posts