ASSIGNMENTSテーブルにデータを挿入すると、HARDWAREとSOFTWAREの値を除いてすべて正常に動作します。これらの値は他のものとまったく同じ方法でコーディングされています。私はそれを得ていない。親キーが見つからないのはなぜですか?
これは動作します:
INSERT INTO ASSIGNMENTS (ASSIGNMENT_ID, PROJECT_ID, STAFF_ID, JOB_ID)
VALUES ('A0005','B0002','ST002','J0002');
しかし、私は、ハードウェアまたはソフトウェアの値を含めるようにしようと、このように: SQLエラー:ORA-02291
INSERT INTO ASSIGNMENTS (ASSIGNMENT_ID, PROJECT_ID, STAFF_ID, JOB_ID, HARDWARE_ID)
VALUES ('A0005','B0002','ST002','J0002','H0002');
私は次のエラーを取得します:整合性制約(JAS1224.SYS_C0028418)違反 - 親キーが見つかりません 02291 00000 - "整合性制約(%s。%s)違反 - 親キーが見つかりません" *原因:外部キー値に一致する主キー値がありません。 *処置:外部キーを削除するか、一致する主キーを追加してください。
ここすべてのコードであり、テーブルのすべてが(ハードウェアおよびソフトウェアテーブルはスタッフテーブルと全く同じフォーマットで符号化される)正しく装着されている:
CREATE TABLE PROJECT
(PROJECT_ID CHAR(5) NOT NULL,
PROJECT_NAME CHAR(20),
PROJECT_TYPE CHAR(20),
START_DATE DATE,
END_DATE DATE,
PRIMARY KEY (PROJECT_ID));
CREATE TABLE HARDWARE
(HARDWARE_ID CHAR(5) NOT NULL,
HARDWARE_NAME CHAR(20),
PRIMARY KEY (HARDWARE_ID));
CREATE TABLE SOFTWARE
(SOFTWARE_ID CHAR(5) NOT NULL,
SOFTWARE_NAME CHAR(20),
PRIMARY KEY (SOFTWARE_ID));
CREATE TABLE STAFF
(STAFF_ID CHAR(5) NOT NULL,
STAFF_NAME CHAR(20),
PRIMARY KEY (STAFF_ID));
CREATE TABLE JOB
(JOB_ID CHAR(5) NOT NULL,
JOB_TYPE CHAR(20),
JOB_GRADE CHAR(20),
PRIMARY KEY (JOB_ID));
CREATE TABLE ASSIGNMENTS
(ASSIGNMENT_ID CHAR(5) NOT NULL,
PROJECT_ID CHAR(5),
STAFF_ID CHAR(5),
JOB_ID CHAR(5),
HARDWARE_ID CHAR(5),
SOFTWARE_ID CHAR(5),
PRIMARY KEY (ASSIGNMENT_ID),
FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID),
FOREIGN KEY (STAFF_ID) REFERENCES STAFF(STAFF_ID),
FOREIGN KEY (JOB_ID) REFERENCES JOB(JOB_ID),
FOREIGN KEY (HARDWARE_ID) REFERENCES HARDWARE(HARDWARE_ID),
FOREIGN KEY (SOFTWARE_ID) REFERENCES SOFTWARE(SOFTWARE_ID));
実際に 'HARDWARE'テーブルに' HARDWARE_ID = 'H0002''という行がありますか?プライマリキーを参照するプライマリキーと外部キーの仕組みを理解していますか? – mathguy
私はこの質問をしたところ、データがすでに挿入されていて、すべてがそこにあったと確信していましたが、私は間違いを犯しているに違いないと思います。すべてのコードが書かれて準備ができて私は私が思ったが、それを実行していない必要があります。 – JadstaSeven
:-)そういう心配は皆に起こります。 – mathguy