0

テーブル A とテーブル B の 2 つのテーブルがあります。

現在、テーブルAがA.idあり、BがリンクB.idするB.id外部キーですA.id

今私の問題は、AにはA.extraidがあり、列名がB.notsamextraid. つまり、 の値は の値とB.notsamextraid一致します。A.extraid

Yii をこれら 2 つの列に一致させるにはどうすればよいですか?

(B.notsamextraid の名前を B.extraid に変更する権限はありません)

4

1 に答える 1

1

Yii のドキュメントには、DO はデータベース スキーマで外部キー関係を定義すると書かれています。

次の表を試していただけますか? 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)
);

編集: 2 つのテーブル間に既に外部キーがあるかどうかを調べるには、次のクエリを使用できます。それは地球上で最も美しいクエリではありませんが、コピーアンドペーストがあります:-)

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');
于 2012-12-02T09:34:39.173 に答える