首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建约束以检查列的值

创建约束以检查列的值
EN

Stack Overflow用户
提问于 2016-12-14 15:09:07
回答 2查看 52关注 0票数 0

我有一个名为(art_almacen)的表,其中包含仓库(calmacen)中的物品(角质层),现在,我如何检查(使用约束)任何仓库是否有重复的项目?例如:

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

这是我的表SQL

代码语言:javascript
复制
CREATE TABLE public.art_almacen
(
  cart_almacen 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)
  USING INDEX TABLESPACE sistema_index
)

使用PostgreSQL

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-14 16:02:30

创建一个复合PK:

代码语言:javascript
复制
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.
票数 1
EN

Stack Overflow用户

发布于 2016-12-14 15:27:35

看起来你需要两列上的唯一约束 (线屋,文章)。在这种情况下,DB将不允许使用仓库和物品的相同组合的两行。就像这个:

代码语言:javascript
复制
CREATE TABLE example (
  a integer,
  wirehouse integer,
  article integer,
  UNIQUE (wirehouse, article)
);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41145876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档