2013-05-08 3 views
0

postgreSQL 데이터베이스에 문제가 있습니다. 나는 이름, 생년월일, 나이를 가진 테이블을 가지고있다. 내가 뭘 원하는PostgreSQL에서 날짜를 기준으로 테이블 나이를 설정했습니다.

CREATE TABLE guy 
     (name  VARCHAR(10), 
     dob  DATE, 
     age  INTEGER, 
     PRIMARY KEY (name) 
     ); 

내가 새 사람을 삽입 할 때, 내가 나이가 자동으로 나이가되고 싶어합니다.

INSERT INTO guy VALUES ('Bill', '05-02-1992'); 

과 나이가 자동으로이 21

나는이 작업을 수행하는 트리거가 필요하면 내가 모르거나 내가 DDL에서 할 수있는 일이 있다면.

도와주세요. 감사합니다.

답변

3

삽입 시간 동안 계산하려면 트리거가 필요합니다.

이 솔루션의 단점은 테이블을 매년 업데이트해야한다는 것입니다. 실제로는 나이 열을 "최신"으로 유지하기 위해 생년월일로 해당 날짜가있는 행이 하나있는 날짜에 매일 업데이트해야합니다. 최신 ".

일반적으로 기존 데이터에서 쉽게 파생 될 수있는 정보를 저장하는 것은 좋지 않습니다 (특히 계산하기가 싼 경우).

select name, 
     dob, 
     age(dob) as age 
from guy; 

항상 적으로 데이터를 업데이트 할 필요없이 최신의 정보가 표시됩니다 : 당신은 다음 선택에 따라 즉석에서 정보를 반환하는 뷰를 만들 수 있습니다

표.

관련 문제