1

主キーが自動インクリメントされたテーブルにPartitionBYRANGEを適用できませんか?主キー定義を持たないcreatetableステートメントの例をいくつか(1、2)ので、私はそれを求めています。また、createtableステートメントでエラーが発生します。

PRIMARY KEYには、テーブルのパーティショニング関数のすべての列が含まれている必要があります

これが私の声明です

CREATE TABLE `tbl_point` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `cord_x` double DEFAULT NULL,
   `cord_y` double DEFAULT NULL,
   `angle` int DEFAULT NULL,
   PRIMARY KEY (`id`)
)
PARTITION BY RANGE (angle) (
   PARTITION p0 VALUES LESS THAN (91),
   PARTITION p1 VALUES LESS THAN (181),
   PARTITION p2 VALUES LESS THAN (271),
   PARTITION p3 VALUES LESS THAN (361)
) 

そしてもう1つの質問:アングルカラムはダブルタイプでしょうか?doubleに設定すると、このエラーが発生するためです。

PARTITION関数は間違ったタイプを返します

ありがとう。

4

1 に答える 1

1

最初のエラー メッセージはかなり明白です。

PRIMARY KEY には、テーブルのパーティショニング関数のすべての列を含める必要があります

主キーで分割するか、主キーに含める必要がありangleます

あなたは後者を望んでいないと思うので、前者が解決策です。

2番目のエラーについては:

PARTITION 関数が間違った型を返す

実際、パーティション関数 (ここでは、" angle" はいわゆる "関数" であり、恒等関数と考えてください) は、マニュアルに記載されているように整数を返す必要があります。

パーティション化キーは、整数列または整数に解決される式のいずれかである必要があります。

于 2012-11-05T15:38:13.980 に答える