【发布时间】:2020-09-10 05:32:22
【问题描述】:
我目前在我们的旧数据库(postgres 9.4)表中遇到一个问题,该表包含一些重复的行。我想确保不再生成重复的行。
但我也想保留已经生成的重复行。因此,我无法对这些列(多列)应用唯一约束。
我创建了一个触发器,它会检查该行是否已存在并相应地引发异常。但是在处理并发事务时它也会失败。
例子:
TAB1
col1 | col2 | col3 |
------------------------------------
1 | A | B | --
2 | A | B | -- already present duplicates for column col2 and col3(allowed)
3 | C | D |
INSERT INTO TAB1 VALUES(4 , 'A' , 'B') ; -- This insert statement will not be allowed.
注意:由于数据库版本较旧,我无法在冲突中使用。
【问题讨论】:
-
您能提供更多信息,例如表结构和一些示例行吗?这将允许其他人模拟您的问题并为您提供更快更好的答案。
-
@WilliamPrigolLopes 我添加了一个示例。
标签: sql postgresql duplicates postgresql-9.4