postgresql,如何在引用另一个表的表中插入元素,但不是引用该表,而是引用它的派生表

kx7yvsdv  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(137)

我有一个表“Compra”,从中派生出“CompraVirtual”和“CompraFisica”。我也有一个表'Comprobante',从中我可以得到'Boleta'和'Factura'。Comprobante的外键引用Compra,例如,我可以使Boleta能够引用CompraVirtual,因为CompraVirtual或CompraFisica的每一行由于继承也是Compra的一行。然而这:

INSERT INTO CompraFisica (ID, Fecha, Monto_total, Medio_Pago, DNI)  VALUES ('1',CURRENT_DATE,10.5,'si','20794189');
INSERT INTO Boleta (Numero, ID, DNI) VALUES ('1','1','15806955');

不起作用。只有当我让Boleta引用Compra而不是CompraFisica时,它才有效,说明Compra中没有具有所需ID的行。我怎么才能做到这一点?
我希望Comprobante能够引用Compra的任何派生表,因为继承,但它说它无法找到表时,试图这样做,它只专门与Compra,而不是与任何派生表。

0wi1tuuw

0wi1tuuw1#

您需要创建与Boleta e Compra的关系。通过删除表CompraFisica并添加一个名为tipo的新行来标识compra是否是“virtual”或“física”。
在此之后,您需要创建一个新的关系Boleta e Compra,并将外键设置为表compra

相关问题