普段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
という風にエラーが出てしまい、作成することが出来ません。
可能な限りテーブルの定義だけで解決したいのですが、どのように設定すればよいのでしょうか?
PRIMARY KEY(user_id, template_id)
の部分を
CONSTRAINT KEY_NAME PRIMARY KEY(user_id, template_id)
にしてみては如何ですか?
PRIMARY KEY(user_id, template_id)
の部分を
CONSTRAINT KEY_NAME PRIMARY KEY(user_id, template_id)
にしてみては如何ですか?
有難うございます。とりあえず同じような動作をすることが確認できました。
CONSTRAINTを使うんだろうなぁ、、、とは思っていたのですが実際の
指定が良く分からなかったのでとても参考になりました。
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の指定は以前のバージョンですね。
複合インデクス(インデクスの構成列が複数ある定義)で、二つ目の列にauto_incrementを指定できるのは、ストレージエンジンがMyISAMかBDBの場合だけです。
ごめんなさい。それは知っておりまして。
結局の所どういったような設定をすればよいのかが聞きたかったんです。
tekitouseさんの回答で解決できましたのでとりあえず締めにさせて頂きます。
有難うございます。とりあえず同じような動作をすることが確認できました。
CONSTRAINTを使うんだろうなぁ、、、とは思っていたのですが実際の
指定が良く分からなかったのでとても参考になりました。