繁体   English   中英

SQL约束检查另一个表列

[英]SQL constraint to check another table column

因此,基本上,我有以下问题要作为oracle sql数据库的一部分实现:

table1(attr1,attr2)

table2(attr3,table1_attr1)

约束:一个table2元组只能具有一些table1_attr1,而table1 attr2中的元组不为null。

我已经尝试了以下方法(以及其他注释掉的可能性),但是它显然不起作用,因为attr2不是唯一值:

CREATE TABLE table1 (
  attr1                VARCHAR(100)  NOT NULL,
  attr2             VARCHAR(200),
  PRIMARY KEY(attr1)
);

CREATE TABLE table2 (
  attr3                  INTEGER       NOT NULL,
  table1_attr1       VARCHAR(100)  NOT NULL,
  table1_attr2         VARCHAR(50),  --REFERENCES table1(attr2),

  FOREIGN KEY (table1_attr1, table1_attr2) REFERENCES table1(attr1, attr2),
    CONSTRAINT const_table1 CHECK(table1_attr2 IS NOT NULL),

  PRIMARY KEY(attr3)
);

我需要一些帮助,因为不能使attr2唯一。 我已经读过关于在某个地方创建函数的信息,但是我对它们并不十分熟悉。 如果他们是唯一的选择,请尝试一下。

终于自己找到了答案。 这听起来很愚蠢,但我确实希望它能帮助其他人在这种情况下苦苦挣扎。

通过增加:

唯一(attr1,attr2)

table1我们正在创建一个唯一键,但是由于主键只是attr1,所以不可能有相同的元组具有不同的attr2的重复项。

重要的是,这两个的组合现在是唯一键,而不会影响数据库的其余部分。 因此,可以毫无问题地完成table2的检查约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM