我是SQL新手并且一直在研究这个问题。我认为答案在于人际关系,但我可以在确切需要做的事情上使用一些方向。
我将从一个假设的例子开始。我有三张桌子 - 卡车,汽车,摩托车。每个表都有自己的主键(我工作得很好),以及他们自己的列,其中大多数都是车辆独有的。
我要做的是在表中添加另一列,ordernumber。我想ordernumber像主键一样自动增加。但是,如果三个表中的任何一个都插入了新条目,我希望它增加。因此,如果我首先将两个条目添加到汽车表中,则第一个卡车条目上的订单号将为3。
我很抱歉,如果这是微不足道的(或一个坏主意),可以在这方面使用一些方向。如果它有任何区别我在postgresql工作。
答案 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)
);
然后,每个表都可以有一个外键约束来引用订单。