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를 하는 것 같습니다.
한 쿼리로 해결할 수 있는 방법이 있을까요? 아니면 프로그램 쪽에서 부모 개수만큼 쿼리를 날려줘야 할까요?