문제의 코드
@Entity()
@Unique(["swid"])
export default class Soon extends BaseEntity {
@PrimaryGeneratedColumn()
soonid: number;
@Column()
sjid: number;
@Column()
swid: number;
@ManyToOne(() => User, user => user.userid)
@JoinColumn({name: "sjid"})
soonjang: User;
@ManyToOne(() => User, user => user.userid)
@JoinColumn({name: "swid"})
soonwon: User;
@CreateDateColumn()
createdate: Date;
}
- Unique를 처음 접해서 기록합니다
UNIQUE의 개념
SQL의 UNIQUE는 제약 조건의 하나로 해당 컬럼에 동일한 값이 들어가지 않도록 하는 제약 조건이다.
같은 값이 들어가는 경우 오류를 발생시키면서 값의 입력을 거부하므로 코드별로 모두 값이 다르도록 유지시켜준다
즉 테이블 내 항상 유일해야 하는 값으로, 중복이 허용되지 않도록 하기 위해 사용한다
그렇다면 Primary key랑 겹치지 않나
둘의 차이점이라고 한다면, Null의 여부이다. PK는 NULL이 허용되지 않는다.
크게 보면 PK가 unique에 속한다 볼 수 있다
TYPEORM에서는 어떻게 사용하는가
Entity를 선언 할 때, 데코레이터로 @UNIQUE(["column 이름", ..."column 이름 2"])
로 사용한다
728x90
'DEV > Backend' 카테고리의 다른 글
Apache Could not open configuration file apache2.conf 에러 해결 (0) | 2023.01.31 |
---|---|
TypeORM WHERE 옵션 (Relations, Order) (0) | 2023.01.30 |
TypeORM의 Where In 절 (0) | 2023.01.30 |
Token 방식으로 로그인 구현하기 (0) | 2023.01.27 |
JWT 다루기 (0) | 2023.01.26 |