MySQL Cluster 7.3 の外部キーについて

2013年4月にリリースされたMySQL Cluster 7.3 DMR2にて、ついに外部キーの機能が追加されました。この機能はGAではありませんが、MySQL Cluster 7.3 DMR2をダウンロードしていただくことでお試しいただけます。

MySQL Cluster 7.3の外部キーの詳細は下記のブログをご参照ください。今回は全部は訳しませんw
Foreign Keys in MySQL Cluster @ Andrew Morgan’s MySQL Cluster Database Blog

MySQL Cluster 7.3の外部キーの特徴

MySQL Cluster 7.3の外部キーはSQLでのアクセスのみならず、新たに追加されるnode.js、Memcached APIJava APIのClusterJ、mod_NDBでのRESTアクセス、もしくはC++のNDB APIなどいずれのNoSQL APIを利用した場合でも外部キーの機能が利用できます。

基本的にはInnoDBの外部キーの機能とほぼ同等になるように実装されていますが、以下の点が違いとなります。

  • MySQL Cluster 7.3では参照オプションとして"NO ACTION"と"RESTRICT"が利用可能だが、InnoDBでは"NO ACTION"は"RESTRICT"として扱われる
    • "RESTRICT" : 子テーブルから参照されている値が存在している場合は、親テーブルのレコードの変更や削除を一切許可しない
    • "NO ACTION": "RESTRICT"に類似するが、UPDATE文やDELETE文、およびトリガの実行後に参照制約が評価され、制約に違反する場合はROLLBACKされる
  • MySQL Cluster 7.3ではON UPDATE CASCADEは利用不可

InnoDBではセッション変数FOREIGN_KEY_CHECKSで制約の有無を制御できますが、MySQL Cluster 7.3 DMR2の時点では利用できません。これはGAにて対応できるはず。。。

ちなみに、InnoDBストレージエンジンを使用したテーブルとndbclusterストレージエンジンを使用したテーブルの間で外部キーを設定することはできません。


MySQL Workbenchでは、InnoDBMySQL Clusterの外部キーを設定できます。こちらもぜひご利用ください。
Viewing & updating Foreign Key Constraints in MySQL Workbench