5

最初にTeacherテーブルを作成しましたが、その説明は次のとおりです。

   mysql> desc teacher;
   +--------------+-------------+------+-----+---------+-------+
   | Field        | Type        | Null | Key | Default | Extra |
   +--------------+-------------+------+-----+---------+-------+
   | TEACHER_ID   | varchar(3)  | NO   | PRI | NULL    |       |
   | TEACHER_NAME | varchar(40) | YES  |     | NULL    |       |
   +--------------+-------------+------+-----+---------+-------+

次のように新しいテーブルを作成した後、次のテーブルTEACHER_IDで外部キーとして使用したいことが必要です。次のように記述しました。構文的に間違っているかどうかはわかりませんが、エラーは発生しませんでした。 ..。。

 mysql> CREATE TABLE SUB_MCA_TY
->  (SUB_ID VARCHAR(4) PRIMARY KEY,
->  SUB_NAME VARCHAR(30),
-> TEACHER_ID VARCHAR(3) REFERENCES TEACHER(TEACHER_ID));
4

1 に答える 1

13

「インライン」外部キーは、InnoDBを使用している場合でも、MySQLによって常に黙って無視されます(MySQLのすばらしい一貫した世界へようこそ...)

列の後に明示的な制約に変更する必要があります。

CREATE TABLE SUB_MCA_TY
(
   SUB_ID VARCHAR(4) PRIMARY KEY,
   SUB_NAME VARCHAR(30),
   TEACHER_ID VARCHAR(3),
   foreign key (TEACHER_ID) REFERENCES TEACHER(TEACHER_ID)
);

マニュアルからの引用

MySQLは、参照が列仕様の一部として定義されている「インラインREFERENCES仕様」(SQL標準で定義されている)を認識またはサポートしません。

于 2013-03-06T14:28:34.640 に答える