让我们考虑以下两个简化的表格:
CREATE TABLE payments
(
id bigserial NOT NULL PRIMARY KEY,
method int,
method_name name,
total numeric,
payment_date timestamp without time zone,
is_seccessful boolean,
data jsonb
);
CREATE TABLE subscription_payments
(
subscription_id int,
parent_id bigint,
CONSTRAINT pk_subscription_id FOREIGN KEY (subscription_id)
REFERENCES subscriptions (id)
ON DELETE RESTRICT
)
INHERITS (payments);
现在,如何创建
subscription_payments.parent_id
到 payments.id
的外键引用,其中它不会引用其他继承表?
换句话说,我如何参考
subscription_payments.id
?
由于这是一个桥梁,您可以简单地参考付款,这将保证付款已完成
CREATE TABLE subscription_payments
(
subscription_id int,
parent_id bigint,
primary key (subscription_id, parent_id),
CONSTRAINT fk_subscription_id FOREIGN KEY (subscription_id)
REFERENCES subscriptions (id)
ON DELETE RESTRICT,
CONSTRAINT fk_parent_id FOREIGN KEY (parent_id )
REFERENCES payments(id)
ON DELETE RESTRICT
)