定义表约束 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

定义表约束

唯一键、主键和外键约束仅供参考;在您填充表时,Amazon Redshift 并不强制实施它们。例如,如果您将数据插入到具有依赖关系的表中,即使插入操作违反了约束,插入也会成功。但是,主键和外键用作规划提示,如果您应用程序中的 ETL 处理或其他一些处理强制其完整性,则应声明它们。

例如,查询计划器在某些统计计算中使用主键和外键。它这样做是为了推断影响子查询去相关技术的唯一性和引用关系。通过这样做,它可以对大量联接进行排序并消除冗余联接。

计划程序需要利用这些键关系,但它假定 Amazon Redshift 表中的所有键在加载时是有效的。如果您的应用程序允许无效的外键或主键,则某些查询可能返回错误的结果。例如,如果主键不唯一,则 SELECT DISTINCT 查询可能会返回重复的行。如果您不确定自己的表的键约束是否正确,则不要定义它们。不过,如果您确定主键和外键以及唯一性约束有效,则应始终声明它们。

Amazon Redshift 确实会强制实施 NOT NULL 列约束。

有关表约束的更多信息,请参阅 CREATE TABLE。有关如何删除具有依赖关系的表的信息,请参阅 DROP TABLE