Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
Oracle SQL对象-引用上的唯一/外键_Sql_Oracle - Fatal编程技术网

Oracle 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的列不能是唯一的或主键) 是否有可能在参考字段上获得诸如唯一/外键之类的内容(可能

使用SQL对象时,是否可以在引用字段上设置唯一/外键?例如,假设我有下表:

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)

谢谢,这就是我要找的!有没有办法实现外键的类似功能?