2017-10-12 7 views
0

저는 설치하지 않은 PostgreSQL 9.5.3 db를 사용하고 있습니다. 내가 가지고있는 문제는 간단한 업데이트 형식 인 UPDATE <table> SET <col> = <val> WHERE <col> = <old_val>;은 변경 사항을 적용하지 않는다는 것입니다. 1PostgreSQL 업데이트가 작동하지 않습니다.

쿼리 밀리

어떤 원인이 될 수 있습니다 ..에 성공적으로 반환

업데이트 : 나는 pgAdmin 출력은 언급? 그것은 몇 가지 제약 조건에 의해 설명 될 수 있습니까?

감사

+0

는 테이블 분할이 있습니까? –

+0

'UPDATE 1 '은 한 행이 업데이트되었음을 ​​의미합니다. –

+0

@a_horse_with_no_name 나중에 SELECT를 수행 할 때도 값은 동일하게 유지됩니다. – Murukan

답변

0

많은 일이 실제 업데이트에 대한 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 

아직 데이터가 변경되지

를 참조하십시오. 당신은 그래서 당신이 후 업데이트 된 값을 선택, 값이 단순히 다른 트랜잭션에 의해 갱신 될 수있는 변경 커밋 또한 후

...