如果外键表列与oracle + yii框架中引用的父表列不匹配,该怎么办?

时间:2012-12-02 08:58:12

标签: php oracle yii

我有两个表,表A和表B.

现在,表A有A.id,B有B.idB.id是与A.id

链接的外键

现在我的问题是,A有A.extraid“B”中有很多行,其中列名是B.notsamextraid。换句话说,B.notsamextraid的值与A.extraid

的值匹配

为了让Yii与这两列有不同的名称,我应该怎么做?

(我不授权将B.notsamextraid的名称改为B.extraid)

1 个答案:

答案 0 :(得分:1)

Yii文档说DO define foreign-key relationships in the database schema

你能试试下表吗? Yii应该能够获取两个外键:

create table a (
  id      int not null primary key,
  extraid int not null unique
);

create table b (
  id            references a(id),
  notsamextraid references a(extraid)
);

编辑:要确定两个表之间是否已存在外键,可以使用以下查询。这不是地球上最漂亮的查询,但有复制和粘贴: - )

select t1.owner, t1.constraint_name, t1.constraint_type, t1.table_name, c1.column_name,
       t2.owner, t2.constraint_name, t2.constraint_type, t2.table_name, c2.column_name
  from all_constraints  t1
  join all_cons_columns c1
    on t1.constraint_name=c1.constraint_name
   and t1.owner=c1.owner 
   and t1.table_name=c1.table_name
  join all_constraints  t2
    on t1.owner=t2.owner
   and t1.r_constraint_name=t2.constraint_name
  join all_cons_columns c2
    on t2.constraint_name=c2.constraint_name
   and t2.owner=c2.owner 
   and t2.table_name=c2.table_name
   and c1.position=c2.position
 where t1.constraint_type = 'R'
   and t1.table_name in ('A','B');