ANALYZE_CONSTRAINTS

在指定范围内分析和报告约束违规

您可以在执行 INSERTUPDATEMERGECOPY 语句时启用自动强制执行主键约束、唯一键约束和检查约束。另外,您可以在发出这些语句后使用 ANALYZE_CONSTRAINTS 验证约束。参考约束强制执行了解更多信息。

ANALYZE_CONSTRAINTSSELECT * FROM t1 持有表 t1 的锁定的相同方式执行锁定。有关其他信息,请参阅 LOCKS

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

ANALYZE_CONSTRAINTS ('[[[database.]schema.]table ]' [, 'column[,...]'] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

标识要分析的表。如果忽略指定架构,Vertica 将使用当前架构搜索路径。如果设置为空字符串,Vertica 将分析当前架构中的所有表。
table 中要分析的列。可以指定多个逗号分隔列。Vertica 将分析范围缩小到指定的列。如果忽略指定列,Vertica 将分析 table 中的所有列。

特权

  • 架构:USAGE

  • 表:SELECT

在加载进程中检测约束违规

Vertica 在运行查询(而不是加载数据)时检查约束违规。要在加载进程中检测违反约束,使用 COPY 语句的 NO COMMIT 选项。通过加载数据但不提交数据,可以使用 ANALYZE_CONSTRAINTS 函数对数据执行加载后检查。如果此函数发现违反约束,由于您尚未提交数据,因此可以回退加载。

如果 ANALYZE_CONSTRAINTS 发现冲突,比如当您在主键中插入一个重复值时,则可以使用以下函数更正错误。效果仅持续到会话结束为止:

返回值

ANALYZE_CONSTRAINTS 返回一个结构集中的结果(参阅下表),其中列出造成违规的架构名称、表名称、列名称、约束名称、约束类型和列值。

如果结果集为空,则不存在违反约束;例如:

> SELECT ANALYZE_CONSTRAINTS ('public.product_dimension', 'product_key');
Schema Name | Table Name | Column Names | Constraint Name | Constraint Type | Column Values
-------------+------------+--------------+-----------------+-----------------+---------------
(0 rows)

下面的结果集显示主键冲突,以及导致冲突的值 ('10')

=> SELECT ANALYZE_CONSTRAINTS ('');
Schema Name | Table Name | Column Names | Constraint Name | Constraint Type | Column Values
-------------+------------+--------------+-----------------+-----------------+---------------
store         t1           c1             pk_t1             PRIMARY           ('10')
(1 row)

结果集列在下表中详细描述:

示例

请参阅检测约束违规