创建约束以检查列的值

时间:2016-12-14 15:09:07

标签: postgresql constraints

我有一个名为(art_almacen)的表,其中包含仓库(calmacen)中的文章(carticle),现在,我如何检查(使用约束)任何仓库都有重复的文章?例如:

如果我有一个Id = 3的仓库,并且它有3篇文章(1,2,3),当我尝试添加另一篇文章时,例如3,阻止我,因为仓库3已经有一篇文章3 < / p>

这是我的表SQL

global $wp_query;
$postObj = $wp_query->post;

使用PostgreSQL

2 个答案:

答案 0 :(得分:3)

看起来你需要两列UNIQUE CONSTRAINT(电报,文章)。在这种情况下,DB不允许您有两行具有相同的仓库和物品组合。像这样:

CREATE TABLE example (
  a integer,
  wirehouse integer,
  article integer,
  UNIQUE (wirehouse, article)
);

答案 1 :(得分:1)

创建复合PK:

t=# CREATE TABLE public.art_almacen
(
  cart_almacen serial,--integer NOT NULL DEFAULT nextval('seq_art_almacen'::regclass),
  calmacen integer NOT NULL,
  carticulo integer NOT NULL,
  cant numeric(11,2) NOT NULL,
  CONSTRAINT fk_art_almacen PRIMARY KEY (cart_almacen,calmacen )
  USING INDEX TABLESPACE sistema_index
)
;
CREATE TABLE
t=# insert into public.art_almacen select 1,1,1,1;
INSERT 0 1
t=# insert into public.art_almacen select 1,2,1,1;
INSERT 0 1
t=# insert into public.art_almacen select 2,1,1,1;
INSERT 0 1
t=# insert into public.art_almacen select 2,2,1,1;
INSERT 0 1
t=# insert into public.art_almacen select 1,2,1,1;
ERROR:  duplicate key value violates unique constraint "fk_art_almacen"
DETAIL:  Key (cart_almacen, calmacen)=(1, 2) already exists.