日向夏特殊応援部隊

俺様向けメモ

異なるdatabaseにまたがるtableのcolumnに対して外部キーを張る

当たり前ですけどInnoDBの話です。
ちなみにMySQL4.1xで試したので、それ以上ならばきっと出来ると思います。

下記のようにfooって言うdatabaseにaテーブルを作る。

create database foo;
create table foo.a (
  id int primary key,
  name text
) TYPE = InnoDB;

create database bar;
create table bar.b (
  id int primary key,
  a_id int not null,
  name text,
  foreign key(a_id) references foo.a(id)
) TYPE = InnoDB;

こんな感じでとりあえずtableは作れます。

insert into foo.a(id, name) values(1, 'a');

insert into bar.b(id, a_id, name) values(1, 1, 'a');
insert into bar.b(id, a_id, name) values(2, 2, 'b'); /* ちゃんと怒られます */

なるほど。こうなるとほとんどschema扱い出来ますな。