3

データベースの 1 つのスキーマを構築しています。私は次の2つのテーブルを持っています...

CREATE TABLE User(
userID INT AUTO_INCREMENT,
...
PRIMARY KEY(userID)
);

CREATE TABLE Tool(
toolID INT AUTO_INCREMENT,
...
PRIMARY KEY(toolID)
)

外部キー制約を使用して、両方のテーブルの 2 つの主キーを持つ hasTool というテーブルを作成したいと考えています。ただし、それに加えて、これらのフィールドの両方を、新しいテーブル hasTool の複合キーにしたいと考えています。次のことを試しましたが、期待どおりの動作が得られないようです。

CREATE TABLE gcHasCoordinates (
userID INT NOT NULL,
toolID INT NOT NULL,
PRIMARY KEY (userID , toolID ),
CONSTRAINT foreign_key_to_User FOREIGN KEY (userID) REFERENCES Coordinate(coordinateID) ,
CONSTRAINT foreign_key_to_Tool FOREIGN KEY (toolID ) REFERENCES Tool(toolID)
);

テーブルが userID または toolID の複数のインスタンスを許可することを許可しますが、両方を許可することはできず、テーブル User と Tool の両方に既存の値を使用したいと考えています。

前もって感謝します!

4

2 に答える 2

0

おそらく、同じデータ型を使用する必要があります。INTINT NOT NULL異なるタイプです

于 2013-02-28T05:38:36.780 に答える
0

そして、問題は何ですか?

を除いて

CONSTRAINT foreign_key_to_Tool FOREIGN KEY (toolID ) REFERENCES Tool(toolID) ON DELETE CASCADE ON UPDATE CASCADE

ツールではなく、不適切なテーブル GeoCache を参照している場所。それは私が思うに機能するはずです。

編集:これを見てください

于 2013-01-05T04:24:51.437 に答える