Q&A

  • 레코드 Insert시 Primary Key 동일하면 Update로 대신하게 하려면?
안녕하세요 델 초보입니다.

테이블에 새로운 레코드를 입력하거나 기존에있는 데이터를 덮어 쓰기를 할려면 어떻게하여야 하는지요.

가령 Ttimer 를 사용하여서 레코드가 계속 추가되는 중에 이전에 기록 된 프라이머리 키 값과 같은것 일 경우 자동으로 UPDATE 되게 할려면 어
3  COMMENTS
  • Profile
    s6763 2000.09.07 10:49
    질문의 요지는 잘 알겠는데, 어떤 db를 쓰는지 궁금하구요.

    oracle,interbase를 쓰는 경우라면, trigger를 사용하시면 될 듯 싶구요.

    파라독스나 mysql을 사용하신다면,

    먼저 쿼리로 결과 값을 가져와서 비교한 후에 값을 insert나 update

    둘중 하나를 써야 할 듯 싶구요, timer는 왜 쓰는지 모르겠어요.



    procedure InsertData;

    var

    s, kk:string;

    begin

    kk:='korea'; //만약에 korea라는 값을 키필드로집어 넣으려고 할 때

    //그 필드에 korea라는 값이 있으면 update하고,

    //없으면 insert 하는 예제인데...

    s:= 'select * from tbname where fname= ' + '"'+ kk +'"';

    with query1 do begin

    close;

    sql.clear;

    sql.add(s);

    open;

    end;



    if query1['fname']<>'' then begin //이미 기존에 korea라는값이 있다. update





    end

    else begin //값이 없으므로 값을 insert 한다.



    end;





    end;





    이태성 wrote:

    > 안녕하세요 델 초보입니다.

    > 테이블에 새로운 레코드를 입력하거나 기존에있는 데이터를 덮어 쓰기를 할려면 어떻게하여야 하는지요.

    > 가령 Ttimer 를 사용하여서 레코드가 계속 추가되는 중에 이전에 기록 된 프라이머리 키 값과 같은것 일 경우 자동으로 UPDATE 되게 할려면 어
  • Profile
    권민호 2000.09.07 10:50
    이런 경우가 어떤업무에서 적용되는지 궁금하군요.

    그냥 인서트만 하시면 될 것 같군요

    그리고 인서트시 하나의 필드에 일시를 주어 그 시점을 저장하고

    데이타를 최종적으로 출력할때 가장 늦은 시점의 데이타만 가져와서

    출력을 하면 될것같네요. 물론 키값은 숫자를 카운트하여야 될것같구요



    이태성 wrote:

    > 안녕하세요 델 초보입니다.

    > 테이블에 새로운 레코드를 입력하거나 기존에있는 데이터를 덮어 쓰기를 할려면 어떻게하여야 하는지요.

    > 가령 Ttimer 를 사용하여서 레코드가 계속 추가되는 중에 이전에 기록 된 프라이머리 키 값과 같은것 일 경우 자동으로 UPDATE 되게 할려면 어
  • Profile
    이태성 2000.09.07 10:51
    권민호 wrote:

    이런 경우가 어떤업무에서 적용되는지 궁금하군요.

    그냥 인서트만 하시면 될 것 같군요

    그리고 인서트시 하나의 필드에 일시를 주어 그 시점을 저장하고

    데이타를 최종적으로 출력할때 가장 늦은 시점의 데이타만 가져와서

    출력을 하면 될것같네요. 물론 키값은 숫자를 카운트하여야 될것같구요



    이태성 wrote:

    안녕하세요 델 초보입니다.

    생산현장에 적용할려고하거든요 기존에있는 모리터링 시스템은 도스용입니다

    파일로 저장하다보니 제품번호가 같으면 덮어쓰거든요 한달후라도 몇번이고 다시검사해

    도 마지막 검사한것만 기록이 남게되거든요...

    db로할려니 도통 모르겠네요...가르쳐주세요?