将现有值插入表中,而不是创建新值

时间:2013-11-18 02:37:52

标签: sql oracle insert

我有一个student_id已经存在于学生表中,所以我试图将该学生插入注册表而不是创建一个新的,但问题是这两个表有不同的列,我不知道该怎么做放在section_id列下,因为section_id是数字,如果我从学生表中选择任何内容到select语句,我会收到错误...

我通常会收到错误“违反完整性约束 - 未找到父密钥”。

我把问号放在问题所在的地方......我怎么能解决这个问题?

enter image description here

这就是我所拥有的

INSERT INTO ENROLLMENT(STUDENT_ID,SECTION_ID,ENROLL_DATE, FINAL_GRADE, CREATED_BY ,CREATED_DATE ,MODIFIED_BY ,MODIFIED_DATE )
SELECT STUDENT_ID, ???? ,sysdate,NULL,'john',sysdate,'john',sysdate
FROM STUDENT
WHERE STUDENT_ID = 300;

1 个答案:

答案 0 :(得分:0)

我认为这应该有效:

 
INSERT INTO ENROLLMENT(STUDENT_ID,SECTION_ID,ENROLL_DATE, FINAL_GRADE, CREATED_BY ,CREATED_DATE                         ,MODIFIED_BY ,MODIFIED_DATE )
SELECT STUDENT_ID, ???? (SECTION.SECTION_ID value) ,sysdate,NULL,'john',sysdate,'john',sysdate
FROM STUDENT
WHERE STUDENT_ID = 300;
查看表SECTION中的数据。如果没有行,则插入一行。从字段SECTION_ID获取值并将其替换为???? (如100)。对于这种情况,还必须在表STUDENT中插入STUDENT_ID = 300的行。