我是红移新手。我需要帮助来理解我遇到的 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)
即使定义了主键,该表也接受重复项。有人可以帮助理解这种行为吗?
我还在查看红移文档以了解其背后的原因。
Redshift 和大多数集群仓库数据库不强制执行唯一性约束。这是由于检查集群中的唯一性的成本过高。例如 Snowflake DB 的工作方式完全相同。
如果您需要值在 Redshift 中保持唯一,那么您的 ETL 流程需要强制执行唯一性。
来自 - https://docs.aws.amazon.com/redshift/latest/dg/t_Defining_constraints.html
唯一性、主键和外键约束仅供参考;它们不是由 Amazon Redshift 强制执行的。尽管如此,主键和外键仍用作计划提示,如果您的 ETL 过程或应用程序中的某些其他过程强制执行它们的完整性,则应声明它们。
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |