使用PSQL添加多列约束的最佳方法

问题描述 投票:0回答:1

我有一个可用性表:

CREATE TABLE availability (
    id SERIAL PRIMARY KEY,
    user_id int REFERENCES users(id) NOT NULL,
    address_id int REFERENCES addresses(id) ON DELETE CASCADE,
    day_of_week int NOT NULL,
    start_mn int,
    end_mn int,
    EXCLUDE using gist (user_id WITH =, day_of_week WITH =, (array[start_mn, end_mn]) WITH &&)
)

在我的地址表中,我还具有一个引用user_idusers(id)字段。

确保插入的相关地址与可用性表中的user_id相同的最佳方法是什么?

我试图寻找触发器或函数而没有成功,我想知道是否有惯用的方式来处理此问题。

postgresql ddl
1个回答
0
投票
您将在UNIQUE中的(id, user_id)上创建addresses约束。

然后创建一个复合外键:

CREATE TABLE availability ( ..., FOREIGN KEY (address_id, user_id) REFERENCES addresses (id, user_id) );

© www.soinside.com 2019 - 2024. All rights reserved.