免责声明:我的数据库知识主要来自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,并且对于每个查询,都不会检测到约束冲突,因为它们处于单独的事务中,这将导致重复数据。
有更好的方法来防止这种情况发生吗?或者我想念一些东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句