【发布时间】:2016-07-20 18:47:15
【问题描述】:
我在 PostgreSQL 数据库中有一组表,将它们命名为 employee、corporation 和 account。 corporation 有一个指向 account 的外键(“帐户”是一个“企业帐户”,跨越一个或多个公司,而不是用于登录系统的“用户帐户”)和 employee具有corporation 的复合外键和account 的外键(它有两列:corporation_id 和account_id;corporation 的外键使用这两列)。
如果删除employee 的父corporation 行,我希望将其corporation_id 列的值设置为NULL,但account_id 列应保留其值。
这个想法是员工必须“属于”一个帐户(因此employee.account_id 是NOT NULL),并且可以分配给该帐户内的任何(或没有)公司。如果一个公司被删除,分配给它的任何员工都应该被取消分配(employee.corporation_id 设置为 NULL),但他们仍应“属于”该帐户(employee.account_id 应保留其值)。
将外键上的ON DELETE SET NULL 设置为corporation (id, account_id) 会将corporation_id 和account_id 设置为NULL。
【问题讨论】: