Q&A

  • 오라클에 대해서..?
오라클 DB에서 일련번호10번을 삭제했을때 삭제한 일련번호(10번)를 다시 저장하고 싶을때 어떻게 해야하나요?
방법이 없나요?
아시는분은 가르쳐주세요
4  COMMENTS
  • Profile
    열심히 2003.03.04 05:17
    일련 번호를 삭제 하셨다는게 무슨 의미인지 모르겠네요..

    일련번호가 10번인 레코드를 삭제하셨다는건가요?

    데이타의 변경이나 삭제 추가 하신 경우에는 트랜잭션이 걸려있는경우

    TDataBase.RollBack이란걸 이용할수 있습니다..

    이럼 TDataBase.Commit 마지막으로 일어난 작업부터 했던 작업을

    다시 무효화 할수 있습니다..아래는 commit로 헬프를 찾음 나오는 예제입니다.

    procedure TForm1.ApplyButtonClick(Sender: TObject);

    begin
      with CustomerQuery do
      begin
      Database1.StartTransaction;
        try
          ApplyUpdates; {try to write the updates to the database};
          Database1.Commit; {on success, commit the changes};
        except
          Database1.Rollback; {on failure, undo the changes};
        raise; {raise the exception to prevent a call to CommitUpdates!}
        end;
      CommitUpdates; {on success, clear the cache}
      end;

    end;

  • Profile
    델사랑 2003.03.04 06:00
    제말은 프로그램에서 삭제한게 아니고요 SQL Plus에서 삭제하고 Commit까지 했습니다. 일련번호 10번의 레코드를 삭제햇습니다
    그런데 이 일련번호를 다시 저장하고 싶은데 방법을 모르겠어요
    다른 디비에 이 일련번호가 연결이 됐기 때문에 살려야 됩니다
    좀 도와주세요

  • Profile
    프리빌 2003.03.04 07:53
    생각하시는 것처럼
    이미 commit 을 했기 때문에 DB수준에서 다시 롤백을 할 수는 없습니다.
    그러므로,
    뭐 아무거나 이용해서
    해당 테이블에
    insert into ..... 쿼리를 날려서 삽입하면 될거구요
    이때 다른 객체에 연결되어 있는 제약조건이 있어
    임의 삽입이 되지 않는다면
    해당 제약조건을 먼저 disable 시킨 후에
    삽입하고
    다시 제약조건을 enalbe 시키면 됩니다.

    이거 아닌가요?


  • Profile
    열심히 2003.03.04 20:26
    이런 무결성을 해치는 일때문에 foreign key 가 있는 것이지요..

    제약조건을 걸어주시고 다음 부터는 이런일이 안생겨야겠지요??

    아님 상위 레코드를 지워야 한다면 트리거로 하위레코드를 지워주던지요..

    commit을 때려도 다시 살리는 방법이 있기는 하던데요..

    저도 오라클에 정통한게 아니라 거기까지는 모르겠네요..

    결과적으로 지금 발생한 레코드가 지워진 일은 수작업으로 해결하시고..

    앞으로 이런일이 발생하지 않는게 중요한거 같네요..