【MySQLに関する質問です】


PostgreSQLで開発することが殆どですが、
今回、MySQLで開発することになりました。

さて、参照整合性成約でCASCADEをしたいと思うのですが、
MySQLでCASCADEの成約をする場合、どのようにすればいいでしょうか?

ちなみに、PostgreSQLの場合なら、以下の様なコードを実現したいです。
-------------------------------------------------
CREATE TABLE tb_test(
test_id INTEGER
CONSTRAINT fk_test REFERENCES tb_parent(parent_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
-------------------------------------------------

これをMySQLで実行すればエラーが返されますが、どのようにすればうまくいくでしょうか?

ご教授願います。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/20 00:27:14
  • 終了:--

回答(1件)

id:acute_hello_to No.1

acute_hello_to回答回数47ベストアンサー獲得回数12005/09/20 02:02:22

ポイント50pt

http://dev.mysql.com/doc/mysql/ja/innodb-foreign-key-constraints...

MySQL 4.1 リファレンスマニュアル :: 7.5.5.2 FOREIGN KEY 制約

MySQLで作成する場合は、Innodbで作成してください。

Mysqlには、トランザクションや外部キーの装備された(つまり他のRDBMSと同等の)InnoDBでのTableとそれらの機能を除外して速度だけを求めたMyIsamを主に利用します。(それ以外のTable型もあります)

デフォルトがMyIsamなので、InnoDBで作成する場合は、Create Tableで明示します。また、バージョン4.0以上でないと、InnoDBが利用できません。

http://dev.mysql.com/doc/mysql/ja/create-table.html

MySQL 4.1 リファレンスマニュアル :: 6.5.3 CREATE TABLE 構文

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_06.htm

MySQL 編6 - テーブル作成、制約、項目タイプ、キー作成、順序作成 - SAK Streets

id:keijiro

InnoDB型なら実行可能なんですね。

2つめのURLでの例文で実行してみます。

※自己レス

別Categoryで同一質問をしていました。

http://www.hatena.ne.jp/1127143736

こちらと、リンク先の回答で正常に動作しました。

ありがとうございました!

2005/09/21 00:40:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません