개요 두 컬럼의 조합이 Unique 해야할 상황이 종종 발생한다. 예를 들어 하나의 이미지(image_id)를 여러 일(job_id)에 중복 할당을 할 수 있지만 특정한 일(job_id)에 할당한 이미지(image_id)에 중복이 있으면 안되는 경우가 있겠다. 이럴 때에 두 컬럼의 조합이 unique 하다는 제한(constraint)를 걸 수 있다. 참고 링크: https://stackoverflow.com/a/63733203/6513756 생성할 때에 설정하기 예시: 생성시 두 컬럼 값의 조합은 unique 해야 한다는 제약 조건을 가지고 생성한다. CREATE TABLE my_table ( id serial PRIMARYKEY, task_id int NOTNULL, user_id int NOTNULL..
이 글은 Golang이라기 보다는 Postgres 이야기이다. 개요 Postgres는 timestamp, timestamptz 라는 데이터베이스 타입을 제공한다. 두 타입의 차이를 Golang과 bun 패키지를 이용해 확인해본다. TL;DR 두 타입은 저장시의 표현방법의 차이이지 담고있는 절대시간의 값은 같다. timestamptz 타입은 Postgres 서버 내부에 설정되어 있는 timezone 설정에 따라 저장이 된다. 나의 선택은 timestamp를 사용하여 항상 UTC 타임으로 저장하며, 사용자에게 이를 보여주는 애플리케이션에서 사용자의 컴퓨터 timezone에 맞게 변환하여 보여주도록 하는 것이다.(다른 분들의 선택, 모범 답안이 궁금하다.) 준비작업: macOS에 Postgres 설치하기 다양..
TL;DR Postgres 에서 primary key를 unique, autoincrement 로 생성하고 싶다면 serial이 아닌 generated always as identity 를 사용하자 내용 Postgres 에서 table을 생성하며 PK를 하나씩 증가하는 8바이트 정수형으로 선언하려 BIGSERIAL 을 사용하였는데 그 보다는 generated always as identity 를 사용하는 것이 낫다 한다. 그 이유는 1. serial은 Postgres 에서 "auto-generated unique value"를 생성하게 하는 구현이며, SQL 스탠다드가 아니다 2. Postgres 10 부터는 generated as identity 를 지원한다. SQL 스탠다드이다. 상세 참고 링크: h..
- Total
- Today
- Yesterday
- solid
- ORM
- github
- notion
- golang
- websocket
- go
- ChatGPT
- bun
- OpenAI
- intellij
- 인텔리제이
- agile
- 노션
- 중용
- folklore
- 영화
- 2023
- 클린 애자일
- pool
- 명상
- 독서후기
- Shortcut
- postgres
- 체호프
- Gin
- 잡학툰
- strange
- Bug
- API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |