brand marke
brand marke

Reputation: 459

How do I make combination of 3 columns in typeorm, postgres unique?

How can I achieve that there aren't 2 same records in db with values of these 3 columns combined being the same?

  @Column()
  sector: string;

  @Column()
  row: string;

  @Column()
  number: string;

Upvotes: 16

Views: 15791

Answers (2)

Eranga Heshan
Eranga Heshan

Reputation: 5814

Updated Answer:

While creating a unique @Index like @Johannes suggested works for you, semantically the better solution would be creating a composite unique key.

@Unique(["sector", "row", "number"])

Based on https://stackoverflow.com/a/23665806/4343332, Postgres seems to handles both Unique Index and Unique Constraint in the same way internally.

Hence there will be no performance benefit in choosing either one.

Thank you for the insight @Johannes H. 🍻

Upvotes: 22

Johannes H.
Johannes H.

Reputation: 6167

You can annotate the entity with an @Index as described in the documentation about "Indices with multiple columns":

@Index(["sector", "row", "number"], { unique: true })

Upvotes: 5

Related Questions