0

挿入ステートメントの 1 つのバッチで、外部キーによってリンクされた多数のテーブルにデータを入力しようとしています。

私の最初のステートメントは次のようになります...

Insert into SCH2.PEOPLE_MEDICAL_CONDITIONS (ID,PERSON_CODE,CONDITION,START_DATE,END_DATE,IS_ACTIVE,CREATED_BY,CREATED_DATE,UPDATED_DATE,UPDATED_BY,IS_HEALTH_CARE_PLAN,IS_EMERGENCY_RESPONSE_PLAN,IS_ASCIA_PLAN,IS_HIGH_RISK,IS_ANAPHYLAXIS,IMPORTED_NOTES,DOCTOR_DETAIL_ID,DOCTOR_DIAGNOSED,STUDENT_HOSPITALISED_ALLERGY,HOSPITAL_NAME,REVIEW_DATE,USER_1,USER_2,USER_3,USER_4,USER_5,USER_6,USER_7,USER_8,USER_9,USER_10,USER_11,USER_12) values (PEOPLE_MEDICAL_CONDITIONS_SEQ.nextval,10014817,'Diabetes',to_date('01-JAN-00','DD-MON-RR'),null,'Y','MattOC.medtest',SYSDATE,null,null,'N','N','Y','N','N','Type 1',null,'Y','N','NNUH',null,null,null,null,null,null,null,null,null,null,null,null,null);

ID を自動生成したいので、ID フィールドの値としてPEOPLE_MEDICAL_CONDITIONS_SEQ.nextvalを使用しています。

次に、最初のテーブルへの外部キーを持つ別の挿入ステートメント (および挿入ステートメント) をすぐに実行したいと考えています。

Insert into SCH2.PEOPLE_MEDICINE (ID,PERSON_CODE,MEDICAL_CONDITION_ID,MEDICINE_NAME,DUE,ADMINISTRATION,ADMINISTRATION_DETAILS,DOSAGE,IS_LOW_STOCK,IS_DISPENSED_DAILY,START_DATE,END_DATE,EXPIRY_DATE,CREATED_BY,CREATED_DATE,UPDATED_DATE,UPDATED_BY,IMPORTED_NOTES,MED_TYPE,PARENT_PROVIDED,REVIEW_DATE,USER_1,USER_2,USER_3,USER_4,USER_5,USER_6,USER_7,USER_8,USER_9,USER_10,USER_11,USER_12) values (PEOPLE_MEDICINE_SEQ.nextval,10014817,(SELECT ID FROM PEOPLE_MEDICAL_CONDITIONS WHERE CONDITION = 'Diabetes' AND CREATED_BY = 'MattOC.medtest'),'Insulin','INS','DAILY','3 times daily','80 units','N','Y',to_date('01-JAN-00','DD-MON-RR'),null,null,'MattOC.medtest',SYSDATE,null,null,'Insulin',null,'N',null,null,null,null,null,null,null,null,null,null,null,null,null);

SCH2.PEOPLE_MEDICINE.MEDICAL_CONDITION_ID = SCH2.PEOPLE_MEDICINE.ID

最初の挿入ステートメントで自動インクリメント関数を使用しているため、2 番目のステートメントの MEDICAL_CONDITION_ID フィールドで使用する ID を知る方法がありません。私はこれに頼って、以前に作成されたレコードを特定しましたが、これはあまりきれいではありません...

(SELECT ID 
 FROM PEOPLE_MEDICAL_CONDITIONS 
 WHERE CONDITION = 'Diabetes' AND CREATED_BY = 'MattOC.medtest')

データは常にこれらのテーブルに出入りしているため、ID フィールドの挿入ステートメントに実際の値を設定することには消極的です。

外部キーでリンクされた複数のテーブルにデータを挿入しようとしている場合、次の挿入ステートメントに主キーが必要な前の挿入ステートメントを参照する最良の方法は何ですか?

どうもありがとう、

4

1 に答える 1