많은 일이 실제 업데이트에 대한 resons 아직 행 값없는 변경 될 수 있습니다 : 당신은 앉아서 심각하게 생각하는 경우 규칙, 트리거, search_path의 그리고 아마도 더 많은에서 잘못된 스키마. 다른 테이블, 다른 행을 업데이트하고 규칙 및 트리거로 새 값 대신 이전 값을 설정할 수 있습니다. 따라서 테이블과 그 "종속물"에 대한 전체 DDL이 필요합니다. 다음은 트리거 아마 가장 간단한 예는 다음과 같습니다
f=# create table ut(i int);
CREATE TABLE
f=# insert into ut select 1;
INSERT 0 1
f=# create or replace function tf() returns trigger as
$$
begin
if true then NEW.i=OLD.i; end if;
return NEW;
end;
$$ language plpgsql;
CREATE FUNCTION
f=# create trigger tn before update on ut for each row execute procedure tf();
CREATE TRIGGER
f=# update ut set i = 2;
UPDATE 1
f=# select * from ut;
i
---
1
(1 row)
그래서 당신이
f=# update ut set i = 2;
UPDATE 1
아직 데이터가 변경되지
를 참조하십시오. 당신은 그래서 당신이 후 업데이트 된 값을 선택, 값이 단순히 다른 트랜잭션에 의해 갱신 될 수있는 변경 커밋 또한 후
...
는 테이블 분할이 있습니까? –
'UPDATE 1 '은 한 행이 업데이트되었음을 의미합니다. –
@a_horse_with_no_name 나중에 SELECT를 수행 할 때도 값은 동일하게 유지됩니다. – Murukan