2

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

例子:

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

whereuser2包含一个以 phone 作为主键的表。

我怎样才能做到这一点?

4

2 回答 2

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)        ); 

明确命名我们的约束是一种很好的做法,因为系统生成的名称很难使用。

于 2012-04-29T23:44:44.913 回答
-1

它应该是这样的:

create table emp 
     ( name char(10)
     , empid char(10)
     , dob date
     , phone char(14)
     , primary key(empid)
     , foreign key phone 
          references user2.contacts)
       );
于 2012-05-01T05:00:55.163 回答