반응형
새 행에 대해서만 기본 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 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()
);
감사해요.
사소한 최적화
select pg_typeof(now()); --returns: timestamp with time zone. So now include timezone.
타임스탬프가 더 좋습니다.
begin;
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMPTZ;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
commit;
다음과 같은 것을 시도해 보십시오.
ALTER TABLE table_name ADD CONSTRAINT [DF_table_name_Created]
DEFAULT (getdate()) FOR [created_at];
대체의table_name
당신의 테이블 이름과 함께.
언급URL : https://stackoverflow.com/questions/38916063/add-timestamp-column-with-default-now-for-new-rows-only
반응형
'programing' 카테고리의 다른 글
Postgre에서 타임스탬프 간의 차이(초) 찾기SQL (0) | 2023.05.01 |
---|---|
mongoose 스키마 마이그레이션을 올바르게 처리하는 방법은 무엇입니까? (0) | 2023.05.01 |
"#!/usr/bin/envash"와 "#!/usr/bin/bash"의 차이점은 무엇입니까? (0) | 2023.05.01 |
Mongoose 모델에서 스키마 특성 가져오기 (0) | 2023.05.01 |
윈도우즈 Azure 가상 시스템 - 포트 열기 (0) | 2023.05.01 |