0

MySQL で外部キーを使用すると、この問題が発生します。私は言語が初めてで、多くの公式ドキュメントを読みましたが、明確なものは何もありません.

このサイトで外部キーに関する他の質問も確認しましたが、役に立ちませんでした。正しいコードをコピーして名前をケースに合わせて変更したところ、エラーが発生し続けました。

SQL Fiddle を使用してシンタキシスをチェックしています。これはコードです:

CREATE TABLE Aparato(
Codigo SMALLINT NOT NULL AUTO_INCREMENT,
Descripcion VARCHAR(40) NOT NULL,
TipoNombre VARCHAR(20) NOT NULL,
TipoCaracteristicas VARCHAR(30) NOT NULL,
FOREIGN KEY (TipoNombre) REFERENCES Tipo(Nombre),
FOREIGN KEY (TipoCaracteristicas) REFERENCES Tipo(Caracteristicas),
PRIMARY KEY (Codigo)
);

CREATE TABLE Tipo(
Nombre VARCHAR(20) NOT NULL,
Caracteristicas VARCHAR(30) NOT NULL,
PRIMARY KEY (Nombre)
);

スペイン語ですが、関係ないと思います。このエラーが発生しました。自分で試すことができます ( SQL Fiddle ):

Schema Creation Failed: Can't create table 'db_2_b9c14b.aparato' (errno: 150):

私のデータベースの先生でさえ、問題がどこにあるかを見つけることができません。

4

2 に答える 2

0

Caracteristicas を UNIQUE のようにマークしたり、主キーのように追加したりできます。

CREATE TABLE Tipo(    
  Nombre VARCHAR(20) NOT NULL, 
  Caracteristicas VARCHAR(30) NOT NULL,  
  PRIMARY KEY (Nombre,Caracteristicas) 
);
于 2014-02-26T19:03:20.107 に答える
0

わかった。SQL Fiddle は、複数の PK FROM THE SAME TABLEへの参照を許可しません。同じテーブルから複数のキーを参照する場合は、次のように FOREIGN KEY 行を 1 つだけ記述する必要があります。

FOREIGN KEY (TipoNombre,TipoCaracteristicas) REFERENCES Tipo(Nombre,Caracteristicas)

また、参照されるテーブルは最初の場所にある必要があります。

CREATE TABLE Tipo(
...
);

CREATE TABLE Aparato(
...
);

迅速な回答をありがとうございました。

于 2014-02-27T09:46:17.660 に答える