Q&A

  • Query로 입력하려는데 Key Violation... 종북되는 데이터 입력시에..
Query로 데이타를 입력하려고합니다.

Table1 의 Key를 의 필드를 CD라고 하고...
Table2 의 Key를 Table1의 Key CD와 Table2 Key를 CD_NUM으로 하고...
Table3 의 Key를 Table1의 Key CD와 Table2 Key를 CD_NUM와 Table3의 Key Seq로 하고

Table1 CD = '001'
Table2 CD = '001', CD_NUM = 'a001'
Table3 CD = '001', CD_NUM = 'a001', SEQ = '1'

여기서 한번 Query의 ExecSql을 하고, 다음에 또 같은 CD '001'에 2번째 행인...

Table1 CD = '001'
Table2 CD = '001', CD_NUM = 'a002'
Table3 CD = '001', CD_NUM = 'a001', SEQ = '1' 이케 입력하는데 중복이 납니다.

물론 키 중복이기 때문에 에러가 날텐데... 이걸 어케 처리하면될까여?
방법이 없을까여? 제가 아직 DB를 잘 몰라서....
2  COMMENTS
  • Profile
    김홍균 2005.10.05 09:29



    보니까 table1의 프라이머리키는 001,  테이블2의 포린키는 001, 프라이머리는 a001,  테이블3은 포린키 001, a001 이고 프라이머리키가 없네요.. 프라이머리키없더라도 유일한 값으로 만들어 주려면 테이블3에 필드하나 더 추가해서 유일값을 만드러 주시면 될거같아요.



    데이터를 보니...'1'은 공통적으로 들어가는 거 같으니필드하나 더 추가해서 그걸 유일값으로 잡던지요...

    다음 처럼 ;;
    INSERT INTO table3 (cd, CD_NUM, SEQ0,SEQ, Owner) values ("001", "a001",0, "1", "말자");
    INSERT INTO table3 (cd, CD_NUM, SEQ0,SEQ, Owner) values ("001", "a001",1, "1", "말자");

    이렇게 해주시던지... 즉 테이블 3에 들어가는 데이터들도 유일한 값들을 가져야 한다는 얘기였습니다.
  • Profile
    프리땐서 2005.09.30 19:14
    '튜플의 유일성' ----- 데이터베이스 기초중의 기초입니다.
    그러므로 키 필드는 절대 중복입력할 수 없습니다.
    만약 이것을 모른다면 데이터베이스프로그램은 할 수 없습니다.

    어떤 사람은 키 필드를 없애는 사람도 보긴 했습니다만 아주 잘못된거지요.

    그런데 아래 코드를 보면 중복입력하려 하고 있어요. 이런 입력은 안됩니다.

    만약 '튜플의 유일성' 을 모른다면 더 늦기전에 각 홈페이지의 강좌란을 찾아보면
    데이터베이스 기초에대한 강좌가 아주 많습니다. 아니면 데이터베이스 관련 서적을
    한권 구해서 공부를 하기 바랍니다.