我想创建一个表,其中给定的列值只能出现N次。例如,在下面的架构中,我只希望每个Foo
能够在Bar
中包含3个条目。
CREATE TABLE Bar(
id INT PRIMARY KEY,
foo INT REFERENCES Foo(id)
);
我正在使用PostgreSQL,它不允许我在CHECK
约束中使用子查询,这是我的第一个想法。所以我尝试了类似的东西:
CREATE TABLE Bar(
id INT PRIMARY KEY,
foo INT REFERENCES Foo(id),
CHECK (3 >= (SELECT COUNT(*) FROM Bar B WHERE B.foo = foo))
);
这给了我一个错误,说我不能在检查约束中使用子查询。我有什么方法可以做到这一点吗?