在PostgreSQL上,如何防止外键的值被删除,即使在其引用的主键被删除之后?
即使我从bank_account
表中删除了account_number
主键,我仍然希望将account_number
外键保留在payment_history
表中,如下图所示:
的数据
如何防止FK Account_Number
在payment_history
表中被删除,即使我在bank_account
表中删除了它的主键?请帮帮我谢谢你,谢谢
下面是我用来创建这两个表的代码:
create table bank_account
(
account_number int primary key,
bank_name varchar(40)
);
create table payment_history
(
payment_history_id int primary key,
account_number int,
amount_paid decimal,
date date,
constraint account_number_fk
foreign key(account_number) references bank_account(account_number)
);
字符串
1条答案
按热度按时间yeotifhr1#
外键总是有确保两个表之间的完整性的任务。默认情况下,PostgreSQL将抛出一个错误,如果定义了外键,并删除一个键元素。或者,您可以将外键设置为null。由于您不希望任何一个操作,也不希望确保两个表之间的关系仍然存在,因此此时不希望使用外键定义的任何属性。因此,解决方案是省略外键。这对于历史数据来说是非常好的,并且不反对标准化本身。
但是,您可以定义一个函数来触发插入,从而确保至少在插入到历史记录中时,银行帐户存在。如果这也不能满足您的愿望/要求,您必须以某种方式创建数据完整性本身。
字符串
还有扳机
型