안녕하세요. Closure 테이블 관련해서 질문이 있습니다. 0 1 1,395

by 므흐흐 [SQL Query] closure closuretable subquery [2020.09.17 17:12:17]


기본적인 clouse 테이블 관계에서 자식 데이터가 변경되었을 때 '자식들'의 데이터를 종합하여

'부모들'의 데이터를 변경하는 쿼리를 작성하였습니다.

아래 URL에 대략적인 DDL과 Query를 작성해서 올렸습니다.

 

https://www.db-fiddle.com/f/xeKRNfqbQhqaDNXUQQf5B6/0

 

제가 원하는 로직은 1,2,3 데이터가 있는데, 3의 enabled가 false가 되었을 때 부모 데이터들도 변경 시켜주는 것입니다.

1. 3번 데이터가 false가 될 때

2. 2번 데이터를 3번 데이터를 보고 false로 수정한다( 자식이 여럿이면 여럿을 다 보고 판단한다.)

3. 1번 데이터를 2,3번 데이터를 보고 false로 수정한다.

 

그런데 문제는 보시면 아시겠지만 1번은 안 되고, 2번까지만 업데이트가 됩니다.

제 생각에 문제의 원인은 update 시에 select가 매 row마다 실행해서 결과값을 가지고 update 해줘야 하는데

한 번의 select로만 update를 하는 것 같습니다.

 

한 쿼리로 해결할 수 있는 방법이 있을까요? 아니면 프로그램 쪽에서 부모 개수만큼 쿼리를 날려줘야 할까요?

by 므흐흐 [2020.09.25 10:45:03]

불가능한 걸 여쭤본 걸까요 아니면 멍청한 질문을 한 걸까요ㅜㅜ 일단은 프로그램적으로 트랙잭션 걸고 loop로 해결했습니다. 답변은 없었지만 읽어주신 분들 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입