일반적인 SELECT만 하게 되면 Shared lock 이 걸리므로 여러 세션에서 동시에 데이터에 접근이 가능하게 된다. Commit 쿼리를 실행하기 전까지 데이터가 변경되지 않으므로, 다른 세션에서 데이터 변경 작업(Update, Delete)이 있는 경우 데이터의 일관성이 깨지게 된다. 대신에 SELECT ~ FOR UPDATE 를 사용하게 되면 반환된 ROW에 대해 row level lock을 걸 수 있다. 다른 세션에서 Select은 가능하나, Update나 Delete 쿼리에 대해 단일 수행과 일관성을 보장하므로 변경할 수 없다. -- SELECT 할 때 LOCK을 제어할 수 없으면 무한정으로 기다린다. SELECT c FROM t WHERE key = 1 FOR UPDATE; -- SELECT..