跨不同用户引用外键

时间:2012-04-29 21:22:35

标签: oracle reference foreign-keys

我正在引用另一个用户的密钥:

示例:

create table emp 
     ( name char(10)
     , empid char(10)
     , dob date
     , phone char(14)
     , primary key(empid)
     , foreign key phone 
          references (user2.contacts)
       );

其中user2包含一个以电话为主键的表格。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

USER2需要授予您的用户对其表的REFERENCES权限。

grant references on contacts to user1
/

请注意,与其他权限不同,必须始终直接授予REFERENCES。如果通过角色授予权限,USER1将无法创建外键。

外键的语法要求我们在引用中包含主键(或至少是唯一键)列:

create table emp       
( name char(10)      
      , empid char(10)     
      , dob date
      , phone char(14)
      , constraint emp_pk primary key(empid)
      , constraint emp_contact foreign key (phone)
            references (user2.contacts.phone)        ); 

明确命名我们的约束是一种好习惯,因为系统生成的名称很难处理。

答案 1 :(得分:-1)

它应该是这样的:

create table emp 
     ( name char(10)
     , empid char(10)
     , dob date
     , phone char(14)
     , primary key(empid)
     , foreign key phone 
          references user2.contacts)
       );