人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[mysqlのInnoDBについての質問です。]

普段MyIsamで下記のようなテーブルを作っていたのですが、これをInnoDBで実装するにはどのように定義すればよいのでしょうか?

CARETE TABLE profile_template(
user_id INT UNSIGNED NOT NULL,
template_id INT UNSIGNED AUTO_INCREMENT,
PRIMARY KEY(user_id, template_id)
);
(user_idごとにteplate_idが自動で初期値から振られるというテーブルです。)


単純にENGINE=InnoDBをつけて作成した場合、
Incorrect table definition; there can be only one auto column and it must be defined as a key
という風にエラーが出てしまい、作成することが出来ません。


可能な限りテーブルの定義だけで解決したいのですが、どのように設定すればよいのでしょうか?


●質問者: tommyt
●カテゴリ:ウェブ制作
✍キーワード:as ENGINE innodb Key MyISAM
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tekitouse
●100ポイント ベストアンサー

PRIMARY KEY(user_id, template_id)

の部分を

CONSTRAINT KEY_NAME PRIMARY KEY(user_id, template_id)

にしてみては如何ですか?

◎質問者からの返答

有難うございます。とりあえず同じような動作をすることが確認できました。

CONSTRAINTを使うんだろうなぁ、、、とは思っていたのですが実際の

指定が良く分からなかったのでとても参考になりました。


2 ● nohohon_x
●10ポイント

CARETE TABLE profile_template(

user_id INT UNSIGNED NOT NULL,

template_id INT UNSIGNED AUTO_INCREMENT,

PRIMARY KEY(user_id, template_id)

) TYPE=InnoDB;

これでInnoDBに出来ると思います。

◎質問者からの返答

MySQLのバージョンかいて無かったですね(^^;

申し訳ないです。

私が使っているのはmysql5でTYPEの指定は以前のバージョンですね。


3 ● chuken_kenkou
●10ポイント

複合インデクス(インデクスの構成列が複数ある定義)で、二つ目の列にauto_incrementを指定できるのは、ストレージエンジンがMyISAMかBDBの場合だけです。

MySQL AB :: MySQL 4.1 リファレンスマニュアル ::...

◎質問者からの返答

ごめんなさい。それは知っておりまして。

結局の所どういったような設定をすればよいのかが聞きたかったんです。

tekitouseさんの回答で解決できましたのでとりあえず締めにさせて頂きます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ