drop_partition命令是否忽略外键依赖项?

时间:2016-10-08 11:52:44

标签: vertica

给定表A列(A1,A2,A3 ...)和表B列(B1,B2,A1),其中A1是表A中字段A1的外键。

表A包含B引用的记录。

表格按日期字段分区,该字段对表A和B中的相关记录具有相同的值。

如果删除的分区包含B引用的A中的行,为什么我没有得到异常?我本来期望某种错误表明记录正在某处被引用。

或者我错过了什么 - 它应该警告我吗?

1 个答案:

答案 0 :(得分:1)

在版本8之前,Vertica无法在dml操作期间强制执行主键,唯一键或外键约束。您必须使用analyze_constraints()在事后检测违规。

即便版本8在这方面也有局限性。首先,您必须确保启用了检查。其次,这仅适用于主键和唯一键。

为了强制执行FK(在任一版本上),您必须创建一个prejoin投影。但是,即使这样做也可能不是您的答案,因为当存在预加入投影时您不能删除分区(您将删除预加入投影,删除分区,重新创建预加入投影)。

使用prejoin投影还有一些其他限制。

我还提到Vertica不是OLTP,它的重点是快速加载和快速查询(和压缩)。但我理解你的痛苦,因为偶尔我需要这样的功能。

希望这有帮助。