집 >데이터 베이스 >MySQL 튜토리얼 >SQL 업데이트 전에 이전 열 값을 검색하는 방법은 무엇입니까?
강력한 기능에도 불구하고 SQL의 RETURNING 절에는 한계가 있습니다. 업데이트 후 값만 검색합니다. 이는 특히 동시성이 높은 환경에서 업데이트된 열의 원래 값을 찾을 때 장애물이 될 수 있습니다.
Erwin Brandstetter의 솔루션은 자체 조인을 사용하여 이러한 문제를 우아하게 해결합니다. FROM 절에 조인:
UPDATE my_table SET processing_by = our_id_info -- unique to this worker FROM my_table AS old_my_table WHERE trans_nbr IN ( SELECT trans_nbr FROM my_table GROUP BY trans_nbr HAVING COUNT(*) > 1 LIMIT our_limit_to_have_single_process_grab ) AND my_table.row_id = old_my_table.row_id RETURNING my_table.row_id, my_table.processing_by, old_my_table.processing_by AS old_processing_by
테이블의 다른 인스턴스(old_my_table)에 조인하면 쿼리는 업데이트가 발생하기 전에 값을 원활하게 검색할 수 있습니다.
상당한 동시 쓰기 로드가 있는 시나리오에서는 경쟁 조건을 방지하기 위해 추가 조치가 필요합니다.
위 내용은 SQL 업데이트 전에 이전 열 값을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!