首页 > 解决方案 > 结构化类型中的结构化类型或复合属性可以是唯一的吗?

问题描述

结构化类型中的结构化类型或复合属性可以是唯一的吗?

例如,这是否可能:

CREATE TYPE testType AS OBJECT (
  attr1 INTEGER,
  attr2 VARCHAR2(20),
  attr3 VARCHAR(20) UNIQUE
);

标签: sqloracletypesconstraintsunique

解决方案


结构化类型中的结构化类型或复合属性可以是唯一的吗?

不,语法不允许这样做。

但是,如果您在对象派生表中使用它们,那么您可以使列(从对象属性派生)唯一。

CREATE TYPE testType AS OBJECT (
  attr1 INTEGER,
  attr2 VARCHAR2(20),
  attr3 VARCHAR(20)
);

CREATE TABLE test_table OF testType(
  attr3 CONSTRAINT test_table__attr3__u UNIQUE
);

然后:

INSERT INTO test_table (attr1, attr2, attr3 ) VALUES ( 1, 2, 3 );
INSERT INTO test_table (attr1, attr2, attr3 ) VALUES ( 4, 5, 3 );

给出错误:

ORA-00001: unique constraint (SCHEMA_NAME.TEST_TABLE__ATTR3__U) violated

db<>在这里摆弄


推荐阅读