Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在Oracle中,如何声明一对值上的唯一约束及其';s反向对_Database_Oracle_Constraints - Fatal编程技术网

Database 在Oracle中,如何声明一对值上的唯一约束及其';s反向对

Database 在Oracle中,如何声明一对值上的唯一约束及其';s反向对,database,oracle,constraints,Database,Oracle,Constraints,我有一个表定义了两个变量之间的规则: CREATE TABLE VARIANTCOMBINATIONRULE ( VARRECID0 NUMBER(10) NOT NULL, VARRECID1 NUMBER(10) NOT NULL, RULE NUMBER ); ALTER TABLE VARIANTCOMBINATIONRULE ADD ( CONSTRAINT VARIANTCOMBINATIONRULE_PK PRIMARY KEY

我有一个表定义了两个变量之间的规则:

CREATE TABLE VARIANTCOMBINATIONRULE
(
  VARRECID0  NUMBER(10)    NOT NULL,
  VARRECID1  NUMBER(10)    NOT NULL,
  RULE       NUMBER
);

ALTER TABLE VARIANTCOMBINATIONRULE ADD (
  CONSTRAINT VARIANTCOMBINATIONRULE_PK
  PRIMARY KEY
  (VARRECID0, VARRECID1));

如何创建不允许“反向对”的约束?我的意思是,如果存在变体12和14的记录,则不允许反向对(14和12)有新记录。

我认为您不能直接。。。有几个选项,比如使用触发器来确保这类事情(例如,通过自动插入带有特殊标记的反向对)。。。
CREATE UNIQUE INDEX unique_cd0_cd1
      ON VARIANTCOMBINATIONRULE (least(VARRECID0, VARRECID1), greatest(VARRECID0, VARRECID1));