【解決方法】主キーを含む複合外部キーを持つテーブルに値の行を挿入するにはどうすればよいですか?


主キーと別の属性で構成される複合外部キーを持つテーブルに値を挿入しようとすると、エラーが発生し続けます。 ここに私のクエリがあります:

SQL
CREATE TABLE `User` (
  `IC` varchar(50),
  `Name` varchar(50),
  `PhNo` int(12),
  `Email` varchar(50),
  `UserType` varchar(50),
  CONSTRAINT UNIQUE (IC,UserType),
  PRIMARY KEY (`IC`)
);

CREATE TABLE `Patient` (
  `IC` varchar(50),
  `Case` varchar(50),
  `UserType` varchar(50),
  FOREIGN KEY (IC,UserType) REFERENCES USER (IC,UserType),
  PRIMARY KEY (`IC`)
);

クエリを使用して手動で挿入しようとすると、構文エラーが表示されます。

私が試したこと:

これは私が試した挿入クエリです

SQL
INSERT INTO PATIENT(IC,Case,UserType) VALUES ("123456789101","Non-Urgent","Patient");

解決策 1

USER は MySql キーワードであり、テーブル名として使用しないでください。使用する場合は、おそらくバッククォートで囲む必要があります。

FOREIGN KEY (IC,UserType) REFERENCES `USER` (IC,UserType),

それを修正すると、問題が解決する場合があります。

解決策 2

あなたはエラーの内容を教えてくれなかったので、推測するしかありません。

推測では、あなたは ANSI_QUOTES[^] SQL モードが有効になっています。つまり、次のことを意味します。

ANSI_QUOTES SQL モードが有効な場合、二重引用符で囲まれた文字列は識別子として解釈されるため、文字列リテラルは単一引用符でのみ引用できます。

したがって、文字列リテラルを修正する必要があります。

SQL
INSERT INTO PATIENT (IC, Case, UserType) VALUES ('123456789101', 'Non-Urgent', 'Patient');

コメント

タイトルとURLをコピーしました