PostgreSQL에서 타임 스탬프를 자동으로 업데이트하는 방법
CURRENT_TIMESTAMP를 사용하여 MySQL에서 할 수있는 것처럼 새 행이 삽입 될 때 코드가 자동으로 타임 스탬프를 업데이트 할 수 있기를 원합니다.
PostgreSQL에서 어떻게이 작업을 수행 할 수 있습니까?
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp
)
삽입 중에 열을 채우려면 DEFAULT
값을 사용하십시오 .
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp default current_timestamp
)
해당 열의 값은 INSERT
문에 값을 제공하여 명시 적으로 덮어 쓸 수 있습니다 . 이를 방지하려면 트리거 가 필요 합니다 .
행이 업데이트 될 때마다 해당 열을 업데이트해야하는 경우에도 트리거가 필요합니다 ( EJ Brennan에서 언급 함 ).
열 이름에 예약어를 사용하는 것은 일반적으로 좋은 생각이 아닙니다. 다른 이름을 찾아야합니다.timestamp
삽입 트리거를 작성해야하며 레코드가 변경 될 때 변경하려는 경우 가능한 업데이트 트리거를 작성해야합니다. 이 기사에서는이를 아주 잘 설명합니다.
http://www.revsys.com/blog/2006/aug/04/automatically-updating-a-timestamp-column-in-postgresql/
CREATE OR REPLACE FUNCTION update_modified_column() RETURNS TRIGGER AS $$ BEGIN NEW.modified = now(); RETURN NEW; END; $$ language 'plpgsql';
다음과 같이 트리거를 적용하십시오.
CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON customer FOR EACH ROW EXECUTE PROCEDURE update_modified_column();
값이 변경된 경우에만 타임 스탬프 업데이트
EJ의 링크를 기반으로이 링크 ( https://stackoverflow.com/a/3084254/1526023 ) 에서 if 문을 추가합니다.
CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
NEW.modified = now();
RETURN NEW;
ELSE
RETURN OLD;
END IF;
END;
$$ language 'plpgsql';
'now ()'를 기본값으로 사용하면 자동으로 타임 스탬프가 생성됩니다.
참고 URL : https://stackoverflow.com/questions/9556474/how-do-i-automatically-update-a-timestamp-in-postgresql
'developer tip' 카테고리의 다른 글
svn : executable을 추가하는 올바른 방법 (0) | 2020.08.18 |
---|---|
마스터-마스터 대 마스터-슬레이브 데이터베이스 아키텍처? (0) | 2020.08.18 |
ASP.NET MVC의 Html.ActionLink에 CSS 클래스를 어떻게 적용합니까? (0) | 2020.08.17 |
명령 줄의 스크립트에서 함수를 어떻게 실행할 수 있습니까? (0) | 2020.08.17 |
Internet Explorer 11 탐지 (0) | 2020.08.17 |