Q&A

  • [재질문] Join된 Query의 Update는 ?
안녕하세요...매번 질문만 하네요...

아래 질문했던 내용인데...



인사마스터 테이블(AAA)이

SABUN(사원번호) - KEY값

IRUM(성명) ..... 의 구조로 되어 있습니다.



대출정보 테이블(BBB)은

SABUN(사원번호) - KEY 값

HOISU(대출회차) - KEY 값

WONK(원금) ..... 의 구조로 되어 있습니다.



대출정보 테이블을 이름순으로 정렬해서 UPDATE, DELETE, INSERT를

하려고 하거든요...



그런데, JOIN된 QUERY는 UPDATE가 안된다고 하더군요...

델파이 도움말을 보니까 Updating a read-only result set 이라는

항목에 TupdateSQL을 이용하면 가능하다고 해서 해보았는데

update,delete,insert 모두 key violation error가 나타납니다...



TQUERY의 property에 있는 SQL문에는 SELECT * FROM AAA AS A, BBB AS B

WHERE A.SABUN=B.SABUN 이라고 입력하고 TupdateSQL을 배치하여 연결하였습니다..

그리고, 버튼을 클릭하면 위 sql을 clear하고 아래 문장을 sql.add하여 넣고

query를 open합니다...

SELECT * FROM AAA AS A, BBB AS B WHERE A.SABUN=B.SABUN

ORDER BY IRUM, SABUN, HOIS



그런데 조회는 잘 되는데 update, delete, insert에서 모두 위 에러가 발생합니다...

한수 부탁드립니다...

2  COMMENTS
  • Profile
    까마귀 2000.08.12 02:01
    델초 wrote:

    > 안녕하세요...매번 질문만 하네요...

    > 아래 질문했던 내용인데...

    >

    > 인사마스터 테이블(AAA)이

    > SABUN(사원번호) - KEY값

    > IRUM(성명) ..... 의 구조로 되어 있습니다.

    >

    > 대출정보 테이블(BBB)은

    > SABUN(사원번호) - KEY 값

    > HOISU(대출회차) - KEY 값

    > WONK(원금) ..... 의 구조로 되어 있습니다.

    >

    > 대출정보 테이블을 이름순으로 정렬해서 UPDATE, DELETE, INSERT를

    > 하려고 하거든요...

    >

    > 그런데, JOIN된 QUERY는 UPDATE가 안된다고 하더군요...

    > 델파이 도움말을 보니까 Updating a read-only result set 이라는

    > 항목에 TupdateSQL을 이용하면 가능하다고 해서 해보았는데

    > update,delete,insert 모두 key violation error가 나타납니다...

    >

    > TQUERY의 property에 있는 SQL문에는 SELECT * FROM AAA AS A, BBB AS B

    > WHERE A.SABUN=B.SABUN 이라고 입력하고 TupdateSQL을 배치하여 연결하였습니다..

    > 그리고, 버튼을 클릭하면 위 sql을 clear하고 아래 문장을 sql.add하여 넣고

    > query를 open합니다...

    > SELECT * FROM AAA AS A, BBB AS B WHERE A.SABUN=B.SABUN

    > ORDER BY IRUM, SABUN, HOIS

    >

    > 그런데 조회는 잘 되는데 update, delete, insert에서 모두 위 에러가 발생합니다...

    > 한수 부탁드립니다...



    안녕하세요. 까마귀입니다.



    TQuery의 속성중에 Cached Updates 속성을 True로 줬는지 확인해보세요.

    TUpdateSQL을 쓸때는 이 속성을 True로 줘야 합니다.

    그리고, TUpdateSQL을 쓰더라도 만일 Join의 결과가 둘이상의 Table에서 나온것이면 UpdateSQL을 써도 불가능 합니다.

    여기서의 결과는 결과셋의 구성 필드가 다른 Table에서 뽑아온것을 의미합니다.







    위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    김일영 2000.08.15 05:15
    Join의 결과가 둘 이상의 Table에서 나온 것인 경우에는

    UpdateObject를 이용하는 대신에 OnUpdateRecord 핸들러를 작성하면 됩니다.

    즐거운 델파이~



    =====================================================================



    까마귀 wrote:

    > 델초 wrote:

    > > 안녕하세요...매번 질문만 하네요...

    > > 아래 질문했던 내용인데...

    > >

    > > 인사마스터 테이블(AAA)이

    > > SABUN(사원번호) - KEY값

    > > IRUM(성명) ..... 의 구조로 되어 있습니다.

    > >

    > > 대출정보 테이블(BBB)은

    > > SABUN(사원번호) - KEY 값

    > > HOISU(대출회차) - KEY 값

    > > WONK(원금) ..... 의 구조로 되어 있습니다.

    > >

    > > 대출정보 테이블을 이름순으로 정렬해서 UPDATE, DELETE, INSERT를

    > > 하려고 하거든요...

    > >

    > > 그런데, JOIN된 QUERY는 UPDATE가 안된다고 하더군요...

    > > 델파이 도움말을 보니까 Updating a read-only result set 이라는

    > > 항목에 TupdateSQL을 이용하면 가능하다고 해서 해보았는데

    > > update,delete,insert 모두 key violation error가 나타납니다...

    > >

    > > TQUERY의 property에 있는 SQL문에는 SELECT * FROM AAA AS A, BBB AS B

    > > WHERE A.SABUN=B.SABUN 이라고 입력하고 TupdateSQL을 배치하여 연결하였습니다..

    > > 그리고, 버튼을 클릭하면 위 sql을 clear하고 아래 문장을 sql.add하여 넣고

    > > query를 open합니다...

    > > SELECT * FROM AAA AS A, BBB AS B WHERE A.SABUN=B.SABUN

    > > ORDER BY IRUM, SABUN, HOIS

    > >

    > > 그런데 조회는 잘 되는데 update, delete, insert에서 모두 위 에러가 발생합니다...

    > > 한수 부탁드립니다...

    >

    > 안녕하세요. 까마귀입니다.

    >

    > TQuery의 속성중에 Cached Updates 속성을 True로 줬는지 확인해보세요.

    > TUpdateSQL을 쓸때는 이 속성을 True로 줘야 합니다.

    > 그리고, TUpdateSQL을 쓰더라도 만일 Join의 결과가 둘이상의 Table에서 나온것이면 UpdateSQL을 써도 불가능 합니다.

    > 여기서의 결과는 결과셋의 구성 필드가 다른 Table에서 뽑아온것을 의미합니다.

    >

    >

    >

    > 위대한 단군혼이 살아있는 나라.... 대한민국.