AWS Redshift 接受重复项,尽管已声明主键

Syn*_*ror 1 amazon-redshift

我是红移新手。我需要帮助来理解我遇到的 Redshift 的这种行为。因此,我使用以下查询来创建一个新表:

CREATE TABLE customer
  (
     cust_id         INTEGER NOT NULL UNIQUE,
     email           VARCHAR(30),
     name            CHAR(30),
     PRIMARY KEY     (cust_id)
  );
Run Code Online (Sandbox Code Playgroud)

现在,表已成功创建,但在使用以下查询插入数据时:

INSERT INTO customer VALUES (1, 'john.doe@email.com', 'John Doe')
Run Code Online (Sandbox Code Playgroud)

即使定义了主键,该表也接受重复项。有人可以帮助理解这种行为吗?

我还在查看红移文档以了解其背后的原因。

Bil*_*ner 5

Redshift 和大多数集群仓库数据库不强制执行唯一性约束。这是由于检查集群中的唯一性的成本过高。例如 Snowflake DB 的工作方式完全相同。

如果您需要值在 Redshift 中保持唯一,那么您的 ETL 流程需要强制执行唯一性。

来自 - https://docs.aws.amazon.com/redshift/latest/dg/t_Defining_constraints.html

唯一性、主键和外键约束仅供参考;它们不是由 Amazon Redshift 强制执行的。尽管如此,主键和外键仍用作计划提示,如果您的 ETL 过程或应用程序中的某些其他过程强制执行它们的完整性,则应声明它们。