在多个表中排序和共享的一列?

时间:2015-05-31 02:39:21

标签: sql postgresql

我是SQL新手并且一直在研究这个问题。我认为答案在于人际关系,但我可以在确切需要做的事情上使用一些方向。

我将从一个假设的例子开始。我有三张桌子 - 卡车,汽车,摩托车。每个表都有自己的主键(我工作得很好),以及他们自己的列,其中大多数都是车辆独有的。

我要做的是在表中添加另一列,ordernumber。我想ordernumber像主键一样自动增加。但是,如果三个表中的任何一个都插入了新条目,我希望它增加。因此,如果我首先将两个条目添加到汽车表中,则第一个卡车条目上的订单号将为3。

我很抱歉,如果这是微不足道的(或一个坏主意),可以在这方面使用一些方向。如果它有任何区别我在postgresql工作。

1 个答案:

答案 0 :(得分:2)

有可能。这是一个样本

CREATE SEQUENCE vehicle_id_seq;

CREATE TABLE motorcycles (
    id      SERIAL,
    ....
    order_id INT4 DEFAULT nextval('vehicle_id_seq') NOT NULL
);

CREATE TABLE cars (
    id      SERIAL,
    .....
    order_id INT4 DEFAULT nextval('vehicle_id_seq') NOT NULL
);

根据架构,为订单设置单独的表可能会更好。这感觉有点工作,并且总是更好地拥有一个简单的解决方案。

订单表可以是:

CREATE TABLE orders (
    order_id SERIAL,
    (meta data for order)
);

然后,每个表都可以有一个外键约束来引用订单。