Reputation: 459
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
Reputation: 5814
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
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