在postgres
(和许多其他人)中,我们可以通过两种不同的方式声明primary key
:
方法1:
create table MyTable(
MyId SERIAL PRIMARY KEY
)
方法2:
create table MyTable(
MyId SERIAL,
CONSTRAINT pk_myid PRIMARY KEY (MyId)
)
我的问题是: 这些声明之间是否有任何区别(语法除外)?也许Hibernate映射?或者也许其中一个被称为使用的好习惯?
我已经知道 - 第二个用于在多个列上设置PRIMARY KEY
。
答案 0 :(得分:5)
两个版本之间的唯一区别是PK约束的名称。在第一种情况下,Postgres(或所讨论的DBMS)将生成一个名称。 Postgres将创建名称mytable_pkey
。 Oracle会选择SYS_C0029159
在第二个版本中,你可以控制名称。
但在功能方面存在无差异。
我更喜欢第二个版本,以便我可以控制用于约束的名称。