そのため、テーブルの外部キーが前のテーブルを正しく参照していないというこの問題が発生しています。私はIBM i用のDB2でコーディングしています(SCHEMAの代わりにCOLLECTIONSが使用されている古い言語を使用しています----私の大学のカリキュラムの一部です)
正確なエラー メッセージは次のとおりです。
SQL 状態: 42890 ベンダー コード: -573 メッセージ: [SQL0573] UMALIK5 のテーブル EMPLOYEE には、一致する親キーがありません。原因 。. . . . : UMALIK5 の制約 CAMPUS_FK の FOREIGN KEY 句に参照列リストが指定されました。UMALIK5 の親テーブル EMPLOYEE には、一致する PRIMARY キーまたは UNIQUE キーがありません。ファイルが分割されている場合、親ファイルのアクセス パスは分割されていない必要があります。制約を追加できません。回復 。. . 処置: 次のいずれかを実行して、リクエストを再試行してください: -- FOREIGN KEY句に、参照列リストと一致するPRIMARYキーまたはUNIQUEキーを持つ表を指定してください。-- 親テーブルで定義された PRIMARY キーまたは UNIQUE キーの定義と一致するように、参照列リストを変更します。-- 親ファイルが分割されている場合は、分割されていないアクセスパスを追加してください。
IBM のサポート ページで調べたエラーは、これよりもさらにわかりにくいものでした。
これが私のコードです:
CREATE TABLE UMALIK5.POSITION (
POSNCODE VARCHAR (10) CONSTRAINT UMALIK5.POSITION_PK PRIMARY KEY,
POSNDESC VARCHAR (50));
SELECT * FROM UMALIK5.SYSTABLES;
SELECT * FROM UMALIK5.SYSCOLUMNS
WHERE TABLE_NAME = 'EMPLOYEE';
CREATE TABLE UMALIK5.EMPLOYEE (
EMP_NUM VARCHAR (10) CONSTRAINT UMALIK5.EMPLOYEE_PK PRIMARY KEY,
EMP_F_NAME VARCHAR (50),
EMP_L_NAME VARCHAR (50),
MANAGER_NUM VARCHAR (10),
SUPERVISOR_CODE VARCHAR (10),
PAYRATE VARCHAR (20),
POSNCODE VARCHAR (10),
HIREDATE VARCHAR (50),
CONSTRAINT UMALIK5.EMPLOYEE_FK FOREIGN KEY (POSNCODE)
REFERENCES UMALIK5.POSITION(POSNCODE));
CREATE TABLE UMALIK5.CAMPUS (
CAMPUS_ID VARCHAR (10) CONSTRAINT UMALIK5.CAMPUS_PK PRIMARY KEY,
CAMPUS_NAME VARCHAR (30),
MANAGER_NUM VARCHAR (10),
CONSTRAINT UMALIK5.CAMPUS_FK FOREIGN KEY (MANAGER_NUM)
REFERENCES UMALIK5.EMPLOYEE(MANAGER_NUM));
DB2 スクリプトを実行すると、テーブル Employee は問題なく作成されますが、何らかの理由で CAMPUS テーブルは作成されません。
私は何を間違っていますか?
ご協力ありがとうございました。