【发布时间】:2020-11-13 10:59:56
【问题描述】:
我有一个包含 val_A、val_B 列的表。要求我只能插入(没有更新/删除,我想避免触发器和存储过程)。
我如何实现这样的要求,即列 val_A 的值必须是唯一的,但对于整个表不是,而只是基于 val_B 的组。换句话说,对于 val_B = 1,我可以有许多 val_A = 1 的条目,但在这种情况下,我不能有 val_A = 1 和 val_B != 1;
例如:
+-------+-------+---------------------+
| val_A | val_B | Comment |
+-------+-------+---------------------+
| 1 | 1 | |
| 2 | 1 | |
| 1 | 1 | This is Allowed |
| 1 | 2 | This is not allowed |
+-------+-------+---------------------+
编辑 #1 我正在寻找的解决方案应该适用于当前的插入。 我正在尝试类似于Davide Anghileri 响应的方法,但在并发插入场景中失败了。
【问题讨论】:
标签: sql postgresql where-clause unique-index