>데이터 베이스 >MySQL 튜토리얼 >SQL 업데이트: `p = q`는 원래 또는 업데이트된 `q` 값을 반영합니까?

SQL 업데이트: `p = q`는 원래 또는 업데이트된 `q` 값을 반영합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-26 21:32:10930검색

SQL UPDATE: Does `p = q` Reflect the Original or Updated `q` Value?

SQL UPDATE 평가 순서

SQL UPDATE 문에서 식이 평가되는 순서는 결과에 큰 영향을 미칠 수 있습니다. 다음 쿼리를 살펴보겠습니다.

UPDATE tbl SET q = q + 1, p = q;

여기서 다음과 같은 질문이 발생합니다. "tbl"."p"가 q 또는 q 1로 설정됩니까? 평가 순서는 SQL 표준에 따라 결정됩니까?

구현이 다양함

SQL 표준이 명확하지 않음에도 불구하고 데이터베이스 구현마다 평가 순서가 다르게 처리됩니다. 테스트 결과 Firebird, InterBase, MySQL, Oracle, PostgreSQL, SQLite 및 SQL Server 전반에 걸쳐 다양한 동작이 밝혀졌습니다. 대부분의 경우 "p" 값은 q 1로 설정되어 왼쪽에서 오른쪽으로 평가함을 나타냅니다.

표준 해석

그러나 SQL92 사양은 행이 업데이트되기 전에 표현식을 평가하기 위한 표준을 제안합니다. 이로 인해 "p"가 q로 설정됩니다.

MySQL의 고유한 접근 방식

MySQL은 테스트 중에 새 값을 "확인"하는 유일한 테스트 데이터베이스입니다. 평가. 이 동작은 대부분의 다른 구현과 다르며 예상치 못한 결과가 발생할 수 있습니다.

결론

SQL 표준에는 평가 순서에 대한 명시적인 지침이 부족하지만 일반적으로 가정됩니다. 업데이트가 적용되기 전에 표현식을 평가해야 합니다. 그러나 구현은 다양하므로 개발자는 잠재적인 불일치를 알고 있어야 합니다. 평가 순서가 중요한 경우 중간 변수를 사용하여 원하는 작업 순서를 명시적으로 정의하는 것이 좋습니다.

위 내용은 SQL 업데이트: `p = q`는 원래 또는 업데이트된 `q` 값을 반영합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.