如果我有一个像这样的轮胎表的 Postgresql 数据库模式(用户有很多轮胎):
user_id integer
description text
size integer
color text
created_at timestamp
我想强制执行“用户只能有 4 个轮胎”的约束。
实现这一点的一种天真的方法是:
SELECT COUNT(*) FROM tires WHERE user_id='123'
,将结果与 4 进行比较,如果它低于 4,则插入。这可能是竞争条件,因此是一种幼稚的方法。
我不想添加计数列。我怎样才能使用排除约束来做到这一点(或者我可以做到这一点)?如果排除约束不可能,那么规范的方法是什么?