postgresql - PostgreSQL 中的 JSON 外键

标签 postgresql

是否可以为 PostgreSQL 中的 json 属性分配外键?这是我想要实现的示例,但它不起作用:

CREATE TABLE Users (Id int NOT NULL PRIMARY KEY);

CREATE TABLE Data (
    Id int NOT NULL PRIMARY KEY,
    JsonData json NOT NULL, -- [{Id: 1, somedata: null},{Id: 2, somedata: null}, ...]
    CONSTRAINT FK_Users_Data FOREIGN KEY (JsonData->Id) REFERENCES Users(Id) -- this constraint will fail
);

最佳答案

将外键分配给 json 属性是不可能的,而且可能永远不可能。这将是对 PostgreSQL 外键执行的重大且相当复杂的更改。我认为这并非不可能,但会面临与外键到数组补丁所遇到的问题类似的问题。

在 9.4 中,可以使整个 json 对象成为外键,因为 jsonb 支持相等性测试。在 9.3 中你甚至不能这样做。

关于postgresql - PostgreSQL 中的 JSON 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489647/

相关文章:

sql - 影响具有特定值的行的 Postgres 触发器

SQL - Postgres - 返回最新日期的最大值

sql - 查找某年获奖次数最多的电影——代码重复

sql - 主键的顺序扫描和索引扫描返回不同的行

sql - PostgreSQL:使用 Generate_Series() 计算 0

sql - 获取具有每月创建日期的记录

PostgreSQL SELECT 太慢

sql - 将一些行更改为列

sql - PostgreSQL - 具有两个多对多关系的 SELECT

postgresql - PostgreSQL 中 && 运算符的时间复杂度