我有一个名为(art_almacen)的表,其中包含仓库(calmacen)中的物品(角质层),现在,我如何检查(使用约束)任何仓库是否有重复的项目?例如:
如果我有一个带有Id=3的仓库,并且它有3篇文章(1,2,3),当我尝试添加另一篇文章时,例如3,阻止我,因为仓库3已经有一篇文章了
这是我的表SQL
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
发布于 2016-12-14 16:02:30
创建一个复合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.发布于 2016-12-14 15:27:35
看起来你需要两列上的唯一约束 (线屋,文章)。在这种情况下,DB将不允许使用仓库和物品的相同组合的两行。就像这个:
CREATE TABLE example (
a integer,
wirehouse integer,
article integer,
UNIQUE (wirehouse, article)
);https://stackoverflow.com/questions/41145876
复制相似问题