FOR UPDATE 절이 하위 쿼리에서 사용되는 경우에도 UPDATE 연산 후 xmax 값을 0으로 설정하면 안되는 것이 아닌지 궁금합니다.FOR UPDATE와의 이상한 정리 동작
내가 테스트 테이블 만들었습니다
CREATE TABLE def.dummy
(
id serial NOT NULL,
nazwa text,
CONSTRAINT pk_dummy PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
삽입 일부 값 : 지금
INSERT INTO def.dummy(
nazwa)
VALUES ('1'),('2'),('3');
내가 서브 쿼리와 업데이트를 할 노력하고있어 : 커밋 후
UPDATE def.dummy AS sp
SET nazwa = 'changed' FROM
(SELECT id, nazwa, xmax, xmin
FROM def.dummy
WHERE id=1
AND xmax = 0
LIMIT 1 FOR UPDATE) AS get_set
WHERE get_set.id = sp.id;
RETURNING sp.*;
거래 xmax 값은 0으로 재설정되지 않고 그대로 유지됩니다 :
올바른 동작입니까? 그렇다면 작동 후 xmax가 0으로 설정되지 않는 이유는 무엇입니까?
답변 해 주셔서 감사합니다. 그 정보를 어디에서 찾을 수 있을지 아십니까? 문서에서 예를 들어 외래 키 검사에 대해 아무 것도 찾을 수 없습니다. – Borys
나는 이런 종류의 것을 문서화 한 것 같지 않다. 우리가 문서화한다면, 사람들은 특정한 표현 방식에 의존하게 될 것이기 때문에 미래의 기본 표현을 바꿀 때마다 문제가 될 것입니다. 물론 PostgreSQL의 소스 코드는 언제든지 읽을 수 있습니다. – alvherre
답장을 보내 주셔서 감사합니다. – Borys