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;
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 |