Postgresql 在postgres中删除表列约束安全吗

Postgresql 在postgres中删除表列约束安全吗,postgresql,Postgresql,我正在看postgres中的一个生产表,其中有以下约束,由于第三方协作,我们需要删除这些约束 "customer_email_unique" UNIQUE CONSTRAINT, btree (customer_email) 这是一个生产表,如果我删除约束,会有什么风险?如果它导致了问题,是否可以在对现有表(其中包含现有数据)进行修改后重新创建它 看起来删除约束的命令是 ALTER TABLE your_table DROP CONSTRAINT customer_emai

我正在看postgres中的一个生产表,其中有以下约束,由于第三方协作,我们需要删除这些约束

"customer_email_unique" UNIQUE CONSTRAINT, btree (customer_email)
这是一个生产表,如果我删除约束,会有什么风险?如果它导致了问题,是否可以在对现有表(其中包含现有数据)进行修改后重新创建它

看起来删除约束的命令是

ALTER TABLE your_table DROP CONSTRAINT customer_email_unique;
我们是一个React/节点堆栈,我可以看到代码在做什么,如果删除约束会发生什么,我对数据的缺乏更多,如果删除约束会发生什么

谢谢

这是一个生产表,如果我删除约束,会有什么风险?如果它导致了问题,是否可以在对现有表(其中包含现有数据)进行修改后重新创建它

风险在于您将删除约束,并插入非唯一的条目。如果不删除非唯一行或将其更新为非唯一行,则无法重新应用唯一约束。另一个风险是,您可能会删除错误的约束,或者错误地重新应用约束。最后,可能有代码假定列是唯一的

要降低此风险,请编写一个脚本来删除约束(“向上”),并编写一个脚本来恢复唯一性并重新应用约束(“向下”)。在非生产数据库的等效表上测试它


这是本书的大意。每个模式更改都由两个脚本完成,一个“向上”脚本用于应用更改,另一个“向下”脚本用于撤消更改。许多ORM(如)都支持迁移。它们使模式具有可复制性,因此所有环境都知道它们具有相同的模式,可以对模式进行测试,通常可以降低模式更改的风险。

谢谢Schwern!非常详细的解释