

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 表限制
<a name="t_Defining_constraints"></a>

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

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

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

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

有关表约束的更多信息，请参阅 [CREATE TABLE](r_CREATE_TABLE_NEW.md)。有关如何删除具有依赖关系的表的信息，请参阅 [DROP TABLE](r_DROP_TABLE.md)。