[postgresql] 새 행에 대해서만 기본 NOW ()로 타임 스탬프 열 추가
수천 개의 행이있는 테이블이 있습니다. 테이블은 처음에 created_at 열로 생성되지 않았기 때문에 생성 타임 스탬프를 얻을 수있는 방법이 없습니다. 미래의 행에 대한 타임 스탬프를 시작하는 것이 중요합니다.
기본값 NOW ()로 타임 스탬프 열을 추가하여 이전 행에 값을 채우지 않고 미래 행에 대해서만 값을 채울 수있는 방법이 있습니까?
ALTER
쿼리를 수행하면 모든 행이 타임 스탬프로 채워집니다.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
답변
기본값 인 열을 추가 null
한 다음 기본값을 갖도록 열을 변경해야 now()
합니다.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
답변
alter 테이블과 함께 기본 규칙을 추가 할 수 있습니다.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
그런 다음 현재 모든 기존 행을 즉시 null로 설정합니다.
UPDATE mytable SET created_at = NULL
그러면이 시점부터의 DEFAULT
효력이 발생합니다.
답변
예를 들어, users
아래와 같은 테이블을 생성 date
하고 기본값 이라는 컬럼을 제공 합니다.NOW()
create table users_parent (
user_id varchar(50),
full_name varchar(240),
login_id_1 varchar(50),
date timestamp NOT NULL DEFAULT NOW()
);
감사
답변
다음과 같이 시도하십시오.
ALTER TABLE table_name ADD CONSTRAINT [DF_table_name_Created]
DEFAULT (getdate()) FOR [created_at];
table_name
테이블 이름으로 대체 합니다.