MySQLMemo006

BACK

主キーにしているのにAUTO_INCREMENTできない!

次のようなCREATE文はエラーになるようです。

CREATE TABLE test(
	id int not null,
	no int not null auto_increment,
	value varchar(50),
	constraint primary key(id, no)
);

実行すると

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

ってエラーが出ます。訳すと

正しくないテーブル定義です。自動列はひとつだけ許されており、そしてそれはキーとして定義されていなくてはなりません。

だろうか?

なに言っちゃってんのこの人?

ちゃんと1つだけでしょう?それに、ちゃんと主キーになってるでしょう?

上記の例は、ヘッダテーブルとidで関連させる明細テーブルを作りたくてこうなっているんですね。
で、連番(no)の採番が面倒くさいからAUTO_INCREMENTにしたいのに。

けしからんですね。自分で連番管理するしかないのか。

Oracleなんかだとシーケンス使うから関係ないですが、MySQL確かシーケンスないよね。

★ ★ ★

ちなみに当然ですが、次のSQLはOKです。

CREATE TABLE test(
	id int not null auto_increment,
	no int not null,
	value varchar(50),
	constraint primary key(id, no)
);

またこれも当然ですが、次のSQLはNGです。エラーになります。

CREATE TABLE test(
	id int not null auto_increment,
	no int not null auto_increment,
	value varchar(50),
	constraint primary key(id, no)
);
最終更新:2013年06月11日 19:57