첫 번째 코드 (올바른 버전):
await (db.update(db.pharmacyCalculations)
..where((tbl) => tbl.id.equals(calculationId)))
.write(PharmacyCalculationsCompanion(...));
두 번째 코드 (잘못된 버전):
await db.update(db.pharmacyCalculations)
.where((tbl) => tbl.id.equals(calculationId))
.write(PharmacyCalculationsCompanion(...));
..)..where()를 사용해 조건을 update 구문에 포함시킵니다. 이 방식은 Drift에서 올바르게 작동하며, 원하는 조건에 맞는 레코드만 업데이트됩니다.where()를 체이닝으로 사용했는데, Drift는 이를 지원하지 않습니다. 조건이 무시되거나 동작하지 않을 위험이 있습니다.where 조건이 무시되어 테이블 전체가 업데이트되는 치명적인 오류를 발생시킬 수 있습니다.update 구문은 ..(캐스케이드 연산자)를 사용해 조건을 설정해야만 올바르게 작동합니다.db.update(db.pharmacyCalculations).where(...).write(...);
🛠 음식점에서 주문하는 상황:
(await db.update(db.pharmacyCalculations)..where(...)).write(...);
🛠 음식점에서 주문하는 상황:
..)를 사용해야 조건과 함께 업데이트가 안전하게 이루어짐.잘못된 방법 (체이닝)
where 조건이 무시될 가능성이 있음.올바른 방법 (캐스케이드 연산자)
where 조건이 올바르게 반영됨...(캐스케이드 연산자)를 사용해야 함...는 조건과 작업을 묶어서 하나의 완성된 명령으로 처리할 수 있게 해줌.코드 작성 후에는 반드시 테스트 환경에서 update 쿼리가 의도한 레코드만 업데이트되는지 확인해야 합니다. Drift의 where() 조건은 캐스케이드(..)로 설정하지 않으면 무시될 수 있습니다.