PostgreSQL:“alter table ...添加唯一(...)”和“alter table ...添加约束...唯一(...)”之间有什么区别?

问题描述 投票:0回答:2

根据测试,两个 SQL 给出相同的结果。

alter table public.company add constraint company_name_key unique ("name")

alter table public.company add unique ("name");

PostgreSQL(12.16 版)

sql postgresql constraints unique alter-table
2个回答
1
投票

没有区别,因为您决定使用 PostgreSQL 默认使用的相同约束名称。错误消息将是

ERROR:  duplicate key value violates unique constraint "company_name_key"

在这两种情况下。您将使用可以决定名称的版本,当您想要不同的名称时,请说出以 c_ 开头的每个约束名称。

在使用具有许多表和大量层次结构的大型数据库时,为了具有描述性,表名和列名可能会变得很长。假设您有一个名为

customer_order_item_customs_tariff
的表,其中有一列名为
customs_tariff_document_number
。 PostgreSQL 将调用你的约束

customer_order_item_customs_t_customs_tariff_document_numbe_key

但也许你更喜欢类似的东西

c_corderitemtariff_docno

我认为 PostgreSQL 在这方面做得非常好。我喜欢自动生成的名称。但如果您不这样做,请使用

ALTER TABLE
的详细版本来添加与您的命名约定或喜好相匹配的唯一约束。


0
投票

标准 ISO SQL 语言承认这两种语法。在第一个中,您选择约束的名称,而第二个将通过内部 RDBMS 进程生成约束的名称。

更改/删除约束时,您需要给出约束的名称。 这就是为什么我会提倡第一个。

© www.soinside.com 2019 - 2024. All rights reserved.