PRIMARY KEY与CONSTRAINT pk_id PRIMARY KEY(id)

时间:2015-08-24 08:31:58

标签: hibernate postgresql primary-key

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

1 个答案:

答案 0 :(得分:5)

两个版本之间的唯一区别是PK约束的名称。在第一种情况下,Postgres(或所讨论的DBMS)将生成一个名称。 Postgres将创建名称mytable_pkey。 Oracle会选择SYS_C0029159

之类的名称

在第二个版本中,可以控制名称。

但在功能方面存在差异。

我更喜欢第二个版本,以便我可以控制用于约束的名称。

相关问题