【发布时间】:2021-07-15 17:35:15
【问题描述】:
如何实现 db 中没有 2 条相同的记录,而这 3 列的值组合起来是相同的?
@Column()
sector: string;
@Column()
row: string;
@Column()
number: string;
【问题讨论】:
标签: typescript postgresql nestjs typeorm
如何实现 db 中没有 2 条相同的记录,而这 3 列的值组合起来是相同的?
@Column()
sector: string;
@Column()
row: string;
@Column()
number: string;
【问题讨论】:
标签: typescript postgresql nestjs typeorm
虽然创建一个独特的 @Index 像 @Johannes 建议的那样适合您,但从语义上讲,更好的解决方案是创建一个 composite unique key。
@Unique(["sector", "row", "number"])
基于https://stackoverflow.com/a/23665806/4343332,Postgres 似乎在内部以相同的方式处理唯一索引和唯一约束。
因此,选择其中任何一个都不会带来性能优势。
感谢您的见解@Johannes H. ?
【讨论】:
您可以使用@Index 注释实体,如documentation about "Indices with multiple columns" 中所述:
@Index(["sector", "row", "number"], { unique: true })
【讨论】: