SQL Uniqe xN约束

时间:2017-02-22 18:16:49

标签: sql database postgresql constraints

我想创建一个表,其中给定的列值只能出现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))
);

这给了我一个错误,说我不能在检查约束中使用子查询。我有什么方法可以做到这一点吗?

0 个答案:

没有答案