2013-12-19 4 views
2

나는 열라는 이름을 가지고 있고 그것은 "CLARK"의 값을 가지고 있는데이데이터 값이 같을 때 Oracle에서 열을 업데이트합니까?

update table1 set name = 'CLARK'; 

오라클 실제로 열을 업데이트 않거나 값이 동일하기 때문에이 업데이트 명령을 무시 않는 UPDATE 문을 실행하는 경우 ?

이 질문 (Oracle, how update statement works)이 발견되었으며 첫 번째 대답은 값이 같더라도 업데이트가 발생 함을 의미합니다. 또한 SQL Developer에서 시도해 보았지만 업데이트가 실제로 발생했는지 여부는 알 수 없습니다.

미리 감사드립니다.

답변

4

예, Oracle은 동일한 경우에도 열을 업데이트합니다.

아주 간단한 예에서 이것은 차이가 없습니다. 그러나 다음 사항을 고려 -

레코드가 업데이트됩니다
  • , 잠금 레코드가 업데이트 될 때
  • 는, 해고 테이블에 트리거, 업데이트 세션에 대한 그 기록에 얻을 수있다

이 업데이트 측면에서는 열이 실제로 업데이트되었음을 ​​보여줍니다.

물론 가치가 같을 때 최적화가 이루어졌지만 오라클 사용자로 볼 수는 없습니다.

+0

그래서 업데이트가 발생하면 감사가 추적되고 있음을 의미합니다 (오라클이 변경 사항을 열 수준에서 추적 할 수 있다는 것을 의미합니다). 그러면 값이 변경되지 않아도 업데이트로 간주되어 추적됩니다. 감사? 또한 이것은 "업데이트"가 값이 동일하기 때문에 실제로 "업데이트"하지 않으면이 코드가 코드에서 설명되어야 함을 의미합니다. 평등을 검사하고 값이 같은지 업데이트하지 않는 것? – BigFish

+0

@BigFish Oracle 감사 기능이 무엇인지 잘 모르겠습니다. –

2

예, 실제 값이 변경되지 않더라도 모든 행이 업데이트되고 모든 트리거가 실행됩니다.

관련 문제