【发布时间】:2021-03-19 17:41:47
【问题描述】:
结构化类型中的结构化类型或复合属性可以是唯一的吗?
例如,这可能吗:
CREATE TYPE testType AS OBJECT (
attr1 INTEGER,
attr2 VARCHAR2(20),
attr3 VARCHAR(20) UNIQUE
);
【问题讨论】:
标签: sql oracle types constraints unique
结构化类型中的结构化类型或复合属性可以是唯一的吗?
例如,这可能吗:
CREATE TYPE testType AS OBJECT (
attr1 INTEGER,
attr2 VARCHAR2(20),
attr3 VARCHAR(20) UNIQUE
);
【问题讨论】:
标签: sql oracle types constraints unique
结构化类型或结构化类型中的复合属性可以是唯一的吗?
不,syntax 不允许这样做。
但是,如果您在对象派生表中使用它们,那么您可以使列(从对象属性派生)唯一。
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小提琴here
【讨论】: