我有一张类似于这样的表:
code | group
------+------
1 | a
1 | a
2 | a
9 | b
9 | b
8 | b
有没有办法设置约束,以便相同的代码只能出现在一个组中?
因此,例如添加行code=3; group=a
不会违反约束,但添加行code=1; group=b
将违反约束。
答案 0 :(得分:1)
如果这些字段在同一个表中,我不相信你能做到。在我看来,您有一个层次结构,group
是主要级别,code
是详细信息。我看到这可以用3个表来解决:
CREATE TABLE "group" (
id "char" CONSTRAINT "group_pk" PRIMARY KEY
)
CREATE TABLE "code" (
id INTEGER CONSTRAINT "code_pk" PRIMARY KEY,
group_id "char",
FOREIGN KEY group_id REFERENCES "group" (id)
)
CREATE TABLE "data" (
id INTEGER CONSTRAINT "data_pk" PRIMARY KEY,
code_id "char",
...
FOREIGN KEY code_id REFERENCES "code" (id)
)
其中data
表代表您正在谈论的表。