PostgreSQL-授权的其他外键约束

时间:2019-03-10 06:33:31

标签: postgresql foreign-keys authorization

我正在尝试配置一个外键,该键要求关系的每一侧的特定列都相同。这是为了确保在数据库级别强制实施“所有权”完整性。

这可能还不清楚,但是我认为通过一个例子可以更清楚地了解我的要求:

考虑一个具有名为user_account的表的数据库,该表代表用户帐户。应用程序的用户可以创建bookschapters,它们都表示为数据库中的各个表。

每个chapterbook都具有user_account的外键– book是创建并“拥有”该数据段的帐户。这里的想法是,用户只能修改自己的书和章节。

CREATE TABLE book ( user_account_id uuid, FOREIGN KEY (user_account_id) REFERENCES user_account(id) ); 表的摘要可能类似于:

chapter

此外,每个book必须具有一个关联的chapter。考虑一下CREATE TABLE chapter ( user_account_id uuid, book_id uuid, FOREIGN KEY (book_id) REFERENCES book(id), FOREIGN KEY (user_account_id) REFERENCES user_account(id) ); 表定义的以下代码段:

book_id

此外键的问题在于,除非我在应用程序代码中禁止这样做,否则它允许用户创建与别人的书相关的章节。

如果必须在应用程序层上强制执行,则可以。但是,这似乎是PostgreSQL可能能够执行的。有没有一种方法可以要求给定chapter的{​​{1}}引用与book具有相同user_account_id的{​​{1}}?

This question似乎与我要问的类似,但是答案中没有详细提供替代解决方案。

0 个答案:

没有答案