所有子类型的唯一序列号

时间:2015-12-18 12:38:39

标签: sql database postgresql ddl

我在设计数据库时遇到以下问题: 在我的EER图中,我有超类型实体A,有2个子类型实体B和C.

表格式如下所示:

Create table A {
     attributes of A here,
     ID int
}

Create table B {
     attributes of B here,
    ID int SERIAL
}

Create table C {
     attributes of C here,
    ID int SERIAL

表B和C中的ID引用表A来维护超类型关系。 我有一个数据列表,其中包含除了在读取数据时我必须自己创建的ID之外的所有属性(使用" create table as" -statement)。 我有这个问题:当我读入数据时,B和C的ID属性都从1开始计数到.... 我以为我希望B和C的ID不同。

我尝试在表A中添加" SERIAL" -keyword,但接下来是我的问题:如何将该ID转换为B或C?

1 个答案:

答案 0 :(得分:2)

使用继承而不是一对多关系?

http://www.postgresql.org/docs/current/static/ddl-inherit.html

或者你可以在两个表中使用相同的序列

CREATE SEQUENCE A_seq;
CREATE TABLE B (
   id INT NOT null DEFAULT nextval('A_seq'::regclass) PRIMARY KEY
);
CREATE TABLE C (
   id INT NOT NULL DEFAULT nextval('A_seq'::regclass) PRIMARY KEY
)