我有一个可用性表:
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_id
的users(id)
字段。
确保插入的相关地址与可用性表中的user_id相同的最佳方法是什么?
我试图寻找触发器或函数而没有成功,我想知道是否有惯用的方式来处理此问题。
UNIQUE
中的(id, user_id)
上创建addresses
约束。然后创建一个复合外键:
CREATE TABLE availability (
...,
FOREIGN KEY (address_id, user_id) REFERENCES addresses (id, user_id)
);