【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:28:56
  • 終了:--

回答(1件)

id:karla No.1

karla回答回数130ベストアンサー獲得回数42005/09/20 22:57:55

ポイント40pt

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

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

こちらでどうでしょう?

CREATE TABLE tb_test(

test_id INTEGER,

CONSTRAINT fk_test FOREIGN KEY(test_id) REFERENCES tb_parent(parent_id)

ON DELETE CASCADE

ON UPDATE CASCADE

)


MySQLの場合はバージョンを書いたほうがよいと思いますよ。

機能があったりなかったりしますので。

id:keijiro

うまくいきました!

ありがとうございます。

基本的なバージョンを書いておくのを忘れてしまいましたm(__)m

ちなみに、バージョンは、CentOS4.1、rpm版のmysql-4.1.10a-2.RHEL4.1です。

バージョン間の互換は分かりませんので、

バージョンによっては、このままで動作できるかもですが、

最後の)にTYPE = innodb;を追記しないと正常に動作しない感じでした。

ご回答ありがとうございました。

2005/09/21 00:38:36

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

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

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

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

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