Postgres外部检查约束

时间:2017-04-10 06:44:03

标签: sql postgresql

是否可以将PostgreSQL检查约束应用于外来列? 没有像这样的外来检查约束,可以获得相同的效果:

create table a (
  id serial primary key,
  flag boolean,
  unique(id, flag)
);

create table b (
  id serial primary key,
  a_id integer,
  yup_true boolean not null default true,
  foreign key (a_id, yup_true) references a(id, flag)
);

但这有点尴尬。有没有办法直接将该检查应用于外国专栏?

编辑:
在这种情况下,希望仅允许b使用检查约束来引用a列为flag的{​​{1}}中的行。该示例显示了使用外键约束可以完成的方法,但问题是具体是否/如何使用检查约束来完成。
可能的样子(完全错误,需要工作)的例子如下:

true

EDIT2:
表中数据的示例以及哪些行有效且无效

create table a (
  id serial primary key,
  flag boolean
);

create table b (
  id serial primary key,
  a_id integer references a(id),
  check(a(flag))
);

0 个答案:

没有答案