sql - 用于 JOINed 表的 PostgreSQL UNIQUE
问题描述
给定以下示例:
CREATE TABLE bom (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name varchar(255) NOT NULL
);
CREATE TABLE bom_item (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
bom_id_fk INT REFERENCES bom(id) NOT NULL,
pcb_identifier varchar(50) NOT NULL
)
除了使它们两者兼而有之之外,是否可以对某些事物施加UNIQUE
约束?
其背后的逻辑是,a在某个 BOM 中可能只存在一次bom_item.pcb_identifier
bom_id_fk
PRIMARY KEY
pcb_identifier
解决方案
在 Postgres 中,您通常会为此使用部分唯一索引:
create unique index on bom_item(pcb_identifier) where(bom_id_fk = ?)
问号应替换bom_id_fk
为您要为其强制唯一性的值pcb_identifier
。
推荐阅读
- python - 添加边缘权重以从邻接矩阵中绘制 networkx 中的输出
- c# - Intellisense 不适用于某些脚本
- python - 计算列内的值重复次数并将计算移至矩阵PANDAS
- django - Django 中的 post_save 信号是原子的吗?
- python - 按钮在 pyqt5 的第二个窗口上不起作用
- react-native - 为什么在 TouchableHighlight 中使用 View 时不能有背景色?
- matlab - 如果条件 Matlab 将不会通过第二个
- ios - 如何防止按钮在文本更改时移动?
- android - 使用 joda time 时在 ci 上测试失败
- javascript - ReactJS:“this.props.addDog(this.state.newDog);”是什么意思?在这段代码中是什么意思?