drop_partition 命令是否忽略外键依赖?
Does the drop_partition command ignore foreign key dependencies?
给定 table A 的列 (A1, A2, A3...) 和 table B 的列 (B1, B2, A1) 其中 A1 是字段 A1 上的外键table答.
Table A 包含 B 引用的记录。
Table按日期字段划分,该字段对于tableA和B中的相关记录具有相同的值。
如果删除的分区包含 A 中被 B 引用的行,为什么我没有得到异常?我本以为会出现某种错误,表明该记录正在某处被引用。
还是我遗漏了什么 - 它应该警告我吗?
在版本 8 之前,Vertica 无法在 dml 操作期间强制执行主键、唯一键或外键约束。您必须在事后使用 analyze_constraints()
检测违规情况。
即使是版本 8 在这方面也有限制。首先,您必须确保已启用检查。其次,这仅适用于主键和唯一键。
为了强制执行 FK(在任一版本上),您必须创建预连接投影。但是,即使这样做也可能不是您的答案,因为当存在预连接投影时您不能删除分区(您将删除预连接投影、删除分区、重新创建预连接投影)。
使用预连接投影还有一些其他限制。
我还会提到 Vertica 不是 OLTP,它的重点是快速加载和快速查询(和压缩)。不过,我理解你的痛苦,因为偶尔我确实需要这样的功能。
希望对您有所帮助。
给定 table A 的列 (A1, A2, A3...) 和 table B 的列 (B1, B2, A1) 其中 A1 是字段 A1 上的外键table答.
Table A 包含 B 引用的记录。
Table按日期字段划分,该字段对于tableA和B中的相关记录具有相同的值。
如果删除的分区包含 A 中被 B 引用的行,为什么我没有得到异常?我本以为会出现某种错误,表明该记录正在某处被引用。
还是我遗漏了什么 - 它应该警告我吗?
在版本 8 之前,Vertica 无法在 dml 操作期间强制执行主键、唯一键或外键约束。您必须在事后使用 analyze_constraints()
检测违规情况。
即使是版本 8 在这方面也有限制。首先,您必须确保已启用检查。其次,这仅适用于主键和唯一键。
为了强制执行 FK(在任一版本上),您必须创建预连接投影。但是,即使这样做也可能不是您的答案,因为当存在预连接投影时您不能删除分区(您将删除预连接投影、删除分区、重新创建预连接投影)。
使用预连接投影还有一些其他限制。
我还会提到 Vertica 不是 OLTP,它的重点是快速加载和快速查询(和压缩)。不过,我理解你的痛苦,因为偶尔我确实需要这样的功能。
希望对您有所帮助。