Oracle SQL对象-引用上的唯一/外键
使用SQL对象时,是否可以在引用字段上设置唯一/外键?例如,假设我有下表:Oracle SQL对象-引用上的唯一/外键,sql,oracle,Sql,Oracle,使用SQL对象时,是否可以在引用字段上设置唯一/外键?例如,假设我有下表: create table MY_TABLE ( SOME_REFERENCE ref MY_TYPE ); 我可以在引用上设置唯一键吗?大概是这样的: alter table MY_TABLE modify (constraint ABC unique(SOME_REFERENCE)) (这将给出ORA-02329:数据类型REF的列不能是唯一的或主键) 是否有可能在参考字段上获得诸如唯一/外键之类的内容(可能
create table MY_TABLE (
SOME_REFERENCE ref MY_TYPE
);
我可以在引用上设置唯一键吗?大概是这样的:
alter table MY_TABLE modify (constraint ABC unique(SOME_REFERENCE))
(这将给出ORA-02329:数据类型REF的列不能是唯一的或主键
)
是否有可能在参考字段上获得诸如唯一/外键之类的内容(可能通过使用变通方法?有变通方法,但很棘手
create type my_type as object
( id number, v varchar2(20));
create table my_type_table of my_type;
insert into my_type_table values(1,'a');
create table MY_TABLE (
SOME_REFERENCE ref MY_TYPE
);
create or replace function test_func(p_ref ref MY_TYPE) return number DETERMINISTIC
is
v_typ MY_TYPE;
begin
SELECT DEREF(p_ref) INTO v_typ FROM DUAL;
return v_typ.id;
end;
CREATE UNIQUE INDEX fn_idx_un ON MY_TABLE (test_func(SOME_REFERENCE));
和测试
insert into my_type_table values(1,'a');
insert into MY_TABLE SELECT REF(e) FROM my_type_table e; (*1)
insert into MY_TABLE SELECT REF(e) FROM my_type_table e; (*2)
*1-工作正常,并插入行
*2-已提出执行选项。ORA-00001:
违反了唯一约束(FN\u IDX\u UN)
谢谢,这就是我要找的!有没有办法实现外键的类似功能?