我有一个执行以下操作的流程:
1 - 从table1创建表load_table1作为select *,其中partition_number = P1
2 - ---将新记录插入load_table1 ---
3 - 将索引和约束应用于load_table1(所有都是全局的并且与table1具有匹配)
4 - alter table table1交换分区P1
表load_table1包括没有验证的索引
load_table1和table1都有唯一的约束集。当应用于load_table1中的数据时它不会失败,但是当进行分区交换时,我在table1中的约束上得到一个唯一约束违反错误。我不确定这是怎么回事,因为我正在完成分区的交换,而partition_number字段是唯一键的一部分 - 所以如果load_table1中的唯一键很好并且相同的数据正在进行中到table1为什么是唯一的失败(我还验证了所有记录都在其正确的分区中加载,所以没有记录,其中partition_number = P1与P1不同的分区)?
我还验证了约束的索引和约束在本地应用于table1,全局应用于load_table1。