Vertica DB中的独特约束

托马斯·拉科夫斯基(Tomasz Rakowski)

免责声明:我的数据库知识主要来自Mysql,因此我可能会误解垂直环境中的某些信息...

我想知道是否存在一种在vertica中插入/更新值,同时在多个会话中实施唯一约束的技术。假设我有一张桌子:

'id', 'unique_field', 'some_filed'

并且对unique_field有一个唯一的约束。我的理解是,在vertica中,首先需要执行插入操作,然后执行ANALYZE_CONSTRAINTS来验证是否违反了约束。在我的特定情况下,我有多个会话在同一张表上执行插入操作,并且它们可能会尝试推送同一条记录。单个会话的顺序似乎是:

Insert into table (id, unique_field, some_field) values (5, 'abc', 'data');
SELECT ANALYZE_CONSTRAINTS(table);
COMMIT;

如果我在两个单独的会话中运行此序列,则两个查询都有可能尝试插入相同的unique_field,并且对于每个查询,都不会检测到约束冲突,因为它们处于单独的事务中,这将导致重复数据。

有更好的方法来防止这种情况发生吗?或者我想念一些东西。

柯密特

由于与操作相关的潜在开销,Vertica不会强制主键的唯一性或负载的唯一约束。

如果ANALYZE_CONSTRAINTS()在提交之前运行,则应该能够捕获潜在的重复项。UPDATEs也有开销,应该避免这些。

有一些方法可以在负载上实施唯一性,例如使用MERGE或在临时表中暂存数据。每种方法都有其自身的局限性。您可以在我的博客文章中了解有关强制数据唯一性的更多信息

更新:从7.2开始,Vertica可以自动实施主键和唯一键约束。有关更多信息,请参见文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

vertica中的ALTER表

来自分类Dev

Vertica在PARTITION BY中的Unix时间

来自分类Dev

Vertica SQL中的Concat GROUP BY

来自分类Dev

Vertica SQL中的Concat GROUP BY

来自分类Dev

Vertica与PostgreSQL中不同的计算

来自分类Dev

在 Vertica 中解析 JSON Payload

来自分类Dev

不同类型的独特约束

来自分类Dev

Vertica中每组查询的前N个

来自分类Dev

在Vertica中按月汇总数据

来自分类Dev

用jooQ在Vertica中编写UUID

来自分类Dev

在Vertica中检查表细分

来自分类Dev

通过vertica中的临时表设置变量

来自分类Dev

从Impala更新vertica中的巨大记录

来自分类Dev

计算每个 JDBC Vertica 表中的行数

来自分类Dev

解决 Django 中多对多关系的独特约束的最佳方法?

来自分类Dev

添加列对vertica DB中超投影的影响

来自分类Dev

Vertica DB中的封装分组依据或条件聚合

来自分类Dev

原则映射超类和独特约束

来自分类Dev

Spring Data Rest和具有独特约束的集合

来自分类Dev

Postgres可更新视图和独特约束

来自分类Dev

具有独特约束和关系的核心数据

来自分类Dev

How do you JOIN tables to a view using a Vertica DB?

来自分类Dev

您如何使用Vertica DB将表加入视图?

来自分类Dev

将格式错误的数字加载到Vertica中

来自分类Dev

如何在Vertica中重命名表格以及投影?

来自分类Dev

在RedShift中,Vertica的conditional_true_event是否可以替代?

来自分类Dev

使用查询在HP Vertica中获取表的Creation-SQL

来自分类Dev

如何查询Vertica中聚合的百分比

来自分类Dev

如何在Vertica中添加一天